【发布时间】:2014-02-27 23:15:43
【问题描述】:
此功能仅适用于某些数字,但对于 15 或 5,它不会给我正确的下一个素数。
public static int nextPrime(int n) {
boolean isPrime = false;
int m = (int) Math.ceil(Math.sqrt(n));
int start = 3;
if (n % 2 == 0) {
n = n + 1;
}
while (!isPrime) {
isPrime = true;
for (int i = start; i <= m; i = i + 2) {
if (n % i == 0) {
isPrime = false;
break;
}
}
if (!isPrime) {
n = n + 2;
}
}
return n;
}
【问题讨论】:
-
您的代码适用于我,适用于 15 和 5。
-
尝试为变量使用更长的名称,这会使代码更具可读性和更容易回答。
i到potentialFactor,m到maxFactor -
你能提供输入和预期输出吗?
-
你应该把这个提交给 CodeReview。