我有这段代码,我想用它来寻找质数。
public class Primzahlen {
public static void main(String [] args) {
for(int i = 1;i<100;i++) {
for(int j=1;j<i;j++) {
if(i%j == 0) {break;}
if(j== (i-1)) {System.out.println(i);}
}
}
}
}
但如果我试着运行程序,输出是空的。
你的代码的问题是这样的,。j
从1开始,每个数字都满足 i%j
断环 j
我推荐这段代码,它更有效,运行时间为O(sqrt(n))。
public class Primzahlen {
public static void main(String [] args) {
for(int i = 2;i<100;i++) {
for(int j=2; j < ((int)Math.sqrt(i))+2 ; j++) {
if(i%j == 0) {break;}
if(j== ((int)Math.sqrt(i))+1) {System.out.println(i);}
}
}
}
}
以下是一些建议。
对于一个完全不同的方法,请看 埃拉托斯泰尼的筛子.