我是初学者,请大家帮忙看看这个小程序的问题怎么修改?

ZZZ5512536 2010-09-24 02:02:40
题目是输出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。
但不知道该怎么修改简单。
...全文
82 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wo4330839 2010-09-24
  • 打赏
  • 举报
回复
在最后一个else语句里加入一条件break
ZZZ5512536 2010-09-24
  • 打赏
  • 举报
回复
谢谢哈,你解释得很清楚!

另外4楼的代码也很好,谢谢!
leaf3003 2010-09-24
  • 打赏
  • 举报
回复
菜鸟看不懂
wyang1991 2010-09-24
  • 打赏
  • 举报
回复
假如说在6之前已经找到了一个数能被7整除,那么第二个if成立了,跳出了内层循环,第三个if就不会执行,第三个if只是为b==i-1这一特殊情况而准备的
wyang1991 2010-09-24
  • 打赏
  • 举报
回复
举个例子,如果要判断7是不是素数,在内层循环里面,如果从2到6都不能被7整除,即内层循环执行到b=6,第二个if不成立就会判断第三个if,如果除到最后一个数6了,都没找到能被7整除的数,那么7肯定就是素数了
wyang1991 2010-09-24
  • 打赏
  • 举报
回复
以上代码简单明了,而且是根据楼主的思路改正而来的

第一个if判断是不是2
第二个if判断从b到i-1有没有能被i整除的数,有则i不是素数,退出内层循环
第三个if是在b到i-2都没有能被i整除的数,而且b==i-1,证明不b不是小于i-1的数的情况下,i一定为素数

分析完毕
ZZZ5512536 2010-09-24
  • 打赏
  • 举报
回复
6楼的

if(b==i-1)System.out.print(i + " ");
能解释下这句吗?有点迷糊 谢谢!
[/Quote]
wyang1991 2010-09-24
  • 打赏
  • 举报
回复
for(i=m;i<=n;i++) {
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 + " ");
}
}
茫茫大海 2010-09-24
  • 打赏
  • 举报
回复
错误的原因是你的程序每次判断后,都输出了,所以可以像上面一样,搞个标志,循环完以后根据标志判断是否为素数,然后输出!
茫茫大海 2010-09-24
  • 打赏
  • 举报
回复


public class Main {
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;
}

}
wyang1991 2010-09-24
  • 打赏
  • 举报
回复
不对,还是有问题,我再仔细看看
wyang1991 2010-09-24
  • 打赏
  • 举报
回复
把break改成continue就行了
sseerraa88 2010-09-24
  • 打赏
  • 举报
回复
初学者也不懂

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧