【发布时间】:2016-04-10 02:59:56
【问题描述】:
我不理解 Java 中的这个“for”循环
这个循环只是为了检查一个数字是否是素数。我理解第一个语句,因为 1 不是质数,而是“for”语句中发生的情况。为什么'primeNumber'被二除,为什么第二个'if'计算余数为零?此代码如何帮助确认素数?它在做什么?
public static boolean isPrime (int primeNumber) {
if (primeNumber == 1) {
return false;
}
for (int primeDivider=2; primeDivider <= primeNumber/2; primeDivider++) {
if (primeNumber % primeDivider == 0) {
return false;
}
}
return true;
}
【问题讨论】:
-
检查 2->num/2 中的数字是否除以无余数为 num(正在测试的数字)。
-
这个问题不太适合 StackOverflow。尝试浏览 http://mathoverflow.net/ 或网络上的任何其他数学资源,了解质数的工作原理。
-
如何判断一个数是否为素数?它几乎肯定会这样做,并进行一些优化。检查 563 是否为素数时,您会尝试除以 2、3、4、5、6 等,对吗?只有当你检查了它是否能被 2 整除后,你才需要检查它是否能被 563/2 或更多整除,对吗?提示...您可以将 primeNumber/2 替换为 Math.floor( Math.sqrt( primeNumber ))
-
提示:素数(或素数)是大于 1 的自然数,除 1 和自身之外没有正除数。想想这和
%之间的关系。
标签: java if-statement for-loop boolean primes