题目是输出M,N间的质数(M<N)。我输入2,5 输出却是2,3,5,5,5
我知道问题出在这个循环里 请大家帮忙看看怎么修改,谢谢了!for(i=m;i<=n;i++) {
int b;
for(b=2;b<=i;b++) {
if(i == 2){
System.out.print(i + " ");
}
else if(i % b ==0)
break;
else
System.out.print(i + " ");
}
问题补充:我知道是i=5时,b=2,3,4时导致输出3个5。
但不知道该怎么修改简单。
我知道问题出在这个循环里 请大家帮忙看看怎么修改,谢谢了!for(i=m;i<=n;i++) {
int b;
for(b=2;b<=i;b++) {
if(i == 2){
System.out.print(i + " ");
}
else if(i % b ==0)
break;
else
System.out.print(i + " ");
}
问题补充:我知道是i=5时,b=2,3,4时导致输出3个5。
但不知道该怎么修改简单。
public static void main(String[] args) {
int i=0,m=2,n=5;
for (i = m; i <= n; i++) {
if(prime(i)) {
System.out.print(i + " ");
}
}
}
//用该函数判断是否为素数
public static boolean prime(int n) {
boolean flag = true;
if(n == 2) {
return flag;
}
for(int i=2; i<=n/2 + 1; i++) {
if(n % i == 0) {
flag = false;
break;
}
}
return flag;
}}
for(int b=2;b<i;b++) {
if(i == 2){
System.out.print(i + " ");
break;
}
if(i % b ==0)break;
if(b==i-1)System.out.print(i + " ");
}
}
能解释下这句吗?有点迷糊 谢谢!
[/Quote]
第二个if判断从b到i-1有没有能被i整除的数,有则i不是素数,退出内层循环
第三个if是在b到i-2都没有能被i整除的数,而且b==i-1,证明不b不是小于i-1的数的情况下,i一定为素数分析完毕