你这个肯定不行呀,你用i%j==0判断能否被整除来判断是否是质数,这个没错,但是你后面的输出语句有问题呀,你这个逻辑是不管是否break还for循环自己做完了都会输出,自然就打印了所有的数字了。你可以这样:
public class Ch0307{
public static void main(String[] args){
System.out.println(2);
for (int i = 3; i <= 100; i++){
for (int j = 2; j < i; j++){
if (i%j == 0){
System.out.println(i);//如果能进入if则是质数 打印即可
break;
}
}
}
}
}
你那逻辑有问题,如果刚一开始想不通设个断点看一遍就明白了,如果想不通可以私信
public class Test{
public static void main(String[] args){
Test a = new Test();
myTes();
}
static void myTes(){
int count = 0;
int fg = 1;
System.out.println("前100个素数:");
for(int x = 2; count < 100; x++){
double k = java.lang.Math.sqrt(x+1);
for(int i =2; i<=k; i++){
if((x%i)==0) {fg = 0;break;}
}
if(fg == 1){
System.out.println(x);
count++;
}
fg = 1;
}
}
}
你这个输出语句应该写在内循环里面,不应该写在外循环,并且你这个程序运行出来,得到的质数会重复