来自https://github.com/nayuki/Project-Euler-solutions/blob/master/p003.java的以下代码段:
private static long smallestFactor(long n) {
for (long i = 2, end = Library.sqrt(n); i <= end; i++) {
if (n % i == 0)
return i;
}
return n; // Prime
}
我对return n
部分感到有些困惑。 n
在if语句中返回之后是否会假设i
的值?为什么呢?
答案 0 :(得分:2)
没有。它返回未更改的参数以指示它是素数。
如果它不是素数,则返回表明它不是素数的因子。
答案 1 :(得分:0)
让我们拿一个数字
num可被分割到一半(即因子)
实施Sieve of Eratosthenes以查找prime_numbers。这是查找Prime数字的有效过程。然后检查返回的素数是否除以“num”......