为了账号安全,请及时绑定邮箱和手机立即绑定

有没有大神告诉我 这是为什么

作者的标准答案中用除数(m)去除于被除数(n),但在子循环中逻辑式中式要求n<m,为什么还会有后面的n=m,并且还输出了?还有如果按这个公式算的话4/4余0,4=4,为什么4没有输出以及6除于6,8除于8........,

正在回答

4 回答

因为不可能出现你说的这种情况,外层循环当m=4的时候,到子循环n是从2开始遍历2到4之间的数

0 回复 有任何疑惑可以回复我~

暴力从2一直遍历到自身 如果能取模为0(至少含有2这个因子 ) 说明不是素数 跳出遍历 继续判定下一个数 暴力遍历  

0 回复 有任何疑惑可以回复我~

#include <stdio.h>

int main()

{

    int m, n;

    for(m=2; m<=50; m++)

    {

for(n=2; n<m; n++)

        {

            if(m%n==0)       //什么条件下跳出当前循环

              break;                 //这里应该退出当前循环了

}

        if(m == n)   //n循环结束后,如果m=n的话就输出m

            printf("%d  ", m);

}

return 0;    

}

首先说明一下什么是素数,素数就是只能被1和它本身整除的数,搞清楚后就开始讲这个程序是怎么一步一步来的;

第一次:最外头的for循环给的m的初始值为2,即m=2,然后就开始内部的for循环了,即n=2,m%n(2%2==0),所以就输出m了,即2是素数;第二次最外头的for循环m=3,而内for循环的n的值就回到n=2了,而不是n=3,就会变成3%2!=0,然后n自增变成n=3了,就变成3%3==0,所以3是素数;第三次最外头的for循环m=4,内for循环n=2,然后4%2==0,但4与2不相等,所以4不是素数,后面以此类推,我第一次讲,希望我讲清楚了

12 回复 有任何疑惑可以回复我~
#1

weixin_慕勒0193379

np这解释看一遍就懂了
2023-01-28 回复 有任何疑惑可以回复我~
请输入你的代码,查看后解答
0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有没有大神告诉我 这是为什么

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信