求质数的Java程序
public class Just{
public static void main(String [] args ){
for(int i=20;i<=100;i+=2){
boolean t = true;
for(int j=2;j<i;j++){
if(i % j == 0){
t = false;
break;
}
}
if(!t) continue;
System.out.println(i);
}
}
}
怎么运行不了啊
把for(int i=20;i<=100;i+=2)
改成for(int i=20;i<=100;i+=1)
或者for(int i=21;i<=100;i+=2)
lz的意思是要找出从做渗罩20-100之间的喊野所有质数,但是这个范围的质数只纯闹能是奇数,因此,i每次要加1,如果i的初值是21,那么i就可以每次加2了。
楼上的说的很有道理,for(int i=20;i<=100;i+=2),i就必定为偶数,不可能有质数,所以要改为仿橡for(int i=20;i<=100;i+=1),或for(int i=21;i<=100;i+=2),为了减少运算次数建议选后者备渗旁。。。
还有 for(int j=2;j<i;j++)是没必要的,取的100的开方10即可,即改为for(int j=2;j<=10;j++)就可,试想100/11=9和100/9=11的效果是等价的,此处的循喊搜环终值一般都选最大数的开方值。。。
public class Just {
public static void main(String[] args) {
int n = 100;
int count = 0;
for (int i = 1; i <= n; i++) {
count = 0;
for (int j = 1; j <= i; j++) {
if (i % j == 0) {
count++;
if (count > 2) {
continue;
}
}
}
if (count <= 2) {
System.out.println(i);
}
}
}
}