我写了以下代码:
package primelessthanN;
public class Main {
public static void main(String[] args) {
int j;
int n;
n = 10;
for (j = 3; j <=n; j++) {
if (isPrime(j))
System.out.println(j);
}
}
private static boolean isPrime(int m) {
for (int i = 3; i <=m; i++) {
if (m % i == 0)
return false;
}
return true;
}
}
我不知道为什么它不起作用而且我有点紧张。
请你们帮助我,告诉我这是我的错误吗?
答案 0 :(得分:1)
有两个问题:
在main
中,你从3迭代到sqrt(n),但你必须从2开始(这是一个素数)并迭代到n
for (j = 2; j <=n; j++) {
if (isPrime(j)) {
System.out.println(j);
}
}
在isPrime
中,您必须从2开始迭代,因为它也是素数。
for (int i = 2; i <= sqrt(m); i++) {
if (m % i == 0)
return false;
}
return true;