LHC18 2013-10-28 10:25 采纳率: 0%
浏览 1764

求解释啊~~~ 又不明白了。。

#include #include main() { int a,b,c; c=0; for(a=100;a<=200;a++) { for(b=2;b<=a-1;b++) if(a%b==0) break; if(a==b) printf("素数为:%d\n",a); c++; } system("pause"); } break的意思不是跳出循环进行下一步吗? 这样的话输出的岂不都是合数了? 还有那个 if(a==b)需要吗? 既然b<=a-1了,怎么会等于呢? 但是取消了输出的又不对,搞不懂了~ 求解答~~

  • 写回答

2条回答

  • Captain_Permission 2013-10-28 11:16
    关注

    外面的循环是表示你要查询是否是素数的范围是100到200,内层循环表示你在逐个试除以验证当前查询的数a是否存在非1的约数,分析代码可以知道,程序跳出内层循环的条件有两个,第一种就是你检测到这个数有非1约数,那么表示这个数不是素数,这时候触发break跳出循环,第二种就是你内层循环所有的可能都试过了,说明这个数没有非1约数,因此它是素数。那么既然不管它是否是素数,都会跳出循环,所以就需要加以判断。容易看出,两者虽然都会跳出内层循环,但是两种情况中a和b的大小关系是不一样的,因为第一种情况是在中途跳出的,因此b必然还小于a,第二种情况是在所有情况都试过之后跳出,因此必然a等于b(因为当b==a-1时候,发现还是不能整除,因此在进入下一次循环之前b++,这个时候b==a,然后再下一次循环开始前在执行判断语句是否b<=a-1,显然不符合,所以跳出,此时b保持等于a的状态),因此就可以根据退出内层循环后a和b的大小关系来判断a是否是素数。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据