Project Euler 179
Project Euler 179
题目
Consecutive positive divisors
Find the number of integers \(1 < n < 10^7\), for which \(n\) and \(n + 1\) have the same number of positive divisors. For example, \(14\) has the positive divisors \(1, 2, 7, 14\) while \(15\) has \(1, 3, 5, 15\).
解决方案
线性筛可以用于高速计算积性函数的值,本题需要求的积性函数是因数个数。
\(v[i]\)是\(i\)最小的质因数。如果用比\(v[i]\)更小的质因数\(p\)产生了一个新数,那么\(i\)中的所有因数都需要乘以一个\(p\),与原来的因数一起成为新数的因子,因此多添加了一倍的因子。
如果\(p=v[i]\),那么按照上面的说法,产生出来的因数是有重复的。假设\(i\)分解质因数后质因数\(p\)的次数为\(e\),那么\(p,p^2,\dots,p^e\)都是重复的一部分,而这一部分因数的数量恰好和\(\dfrac{i}{p}\)因数数量相等,因此需要减去这一部分。
计算完因数个数函数后,直接进行判断。
代码
1 |
|