【发布时间】:2015-06-05 13:12:41
【问题描述】:
int phi (int n) {
int result = n;
for (int i=2; i*i<=n; ++i)
if (n % i == 0) {
while (n % i == 0)
n /= i;
result -= result / i;
}
if (n > 1)
result -= result / n;
return result;
}
我看到了 O(sqrt n) 的 Euler phi 函数 的上述实现。我不知道在for循环和需要更改n。据说可以在更短的时间内完成O (sqrt n) 怎么样? link (in Russian)
【问题讨论】:
标签: algorithm math implementation