鱼C论坛

 找回密码
 立即注册
查看: 2161|回复: 5

[已解决]100到200 间的 质数显示

[复制链接]
发表于 2018-8-5 22:26:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
void main()
{
        int i,m;
        for(m = 100; m <= 200; m++)
        {
                for(i = 2; i < m; i++)
                {
                        {
                                if(m % i == 0)
                                break;
                        }
                        if(i = m - 1 )
            printf("%d\n",m);}
        }
}
如上所示,为什么实际运行所有的奇数出来了(如105,根据m%5,不应该break了吗),求大神指导,好人一生平安。
最佳答案
2018-8-5 22:41:35
  1. if(i = m - 1 )
复制代码

改成
  1. if (i == m - 1)
复制代码

否则一直是True了。(判断一次是否能被二整除之后,所以打印出了所有奇数。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-5 22:38:18 From FishC Mobile | 显示全部楼层
{
if (...)
}  //多了不必要的大括号,造成那程序是局部的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-5 22:38:59 | 显示全部楼层
break只能终止当前循环,所以每次运行break之后,回到了第一个for,然后继续运行。如果想要退出多层循环,有两种方案,一是封装函数,用return嵌套循环;二是添加一个flag变量,用作判断的标记
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-5 22:41:35 | 显示全部楼层    本楼为最佳答案   
  1. if(i = m - 1 )
复制代码

改成
  1. if (i == m - 1)
复制代码

否则一直是True了。(判断一次是否能被二整除之后,所以打印出了所有奇数。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-5 22:43:27 | 显示全部楼层
那请问如何在该基础上完成正确代码呢?去了括号还是不行呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-5 22:47:17 | 显示全部楼层
已解决,感谢各位大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 06:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表