求解一道关于素数的问题,谢谢!
public class Sushu{
public static void main(String args[]){
int count=0;
for(int i=101;i<200;i+=2){
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0)
break;
else
System.out.println(i);
}
}
count++;
System.out.println("素数的个数为:"+count);
}
}
请问为什么某些素数会被重复打出呢?
------解决方案--------------------二楼准确的解释了为什么有些素数会输出多遍,也就是楼主的问题。一楼是标准的程序,但没解释楼主的问题。
------解决方案--------------------2楼分析的很正确啊,else执行了多次,当然打印出多次了。你自己用debug模式跟一下,应该可以看到的
------解决方案--------------------我就跟你说吧。
你那程序的问题,不在于你。为什么有的素数输出了很多遍。
首先从你的程序就可以看出你的逻辑出现了错误。
你觉得解释本来就错误的逻辑有意义吗?
下面是正确的代码。
Java code
public class Sushu{
public static void main(String args[]){
int count=0,i,j;
for(i=101;i<200;i+=2){
for(j=2;j<=Math.sqrt(i);j++){
if ( i % j == 0) {
break;
}
}
if ( j > Math.sqrt(i)) {
System.out.print(i+" ");
count++;
}
}
System.out.println();
System.out.println(count+"个素数");
}
}