鱼C论坛

 找回密码
 立即注册
查看: 2444|回复: 7

求找质数

[复制链接]
发表于 2022-11-30 22:32:51 | 显示全部楼层 |阅读模式

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

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

x
int n;
scanf("%d",&n);
for(i=3;i<=n;i+=2){
                for(m=3;m<i;m+=2)
                {
                        if(i%m==0||m*m>i)
                        break;
                }
                if(m*m>i)
                printf("%d\n",i);
关于质数这是什么意思?
一开始那个初始化i=3也不是很理解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-1 07:13:16 | 显示全部楼层
没有比3小的奇数质数,所以初始化为3。
除2外,没有偶数是质数,所以每次循环加2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-1 07:14:28 | 显示全部楼层
这个代码想实现什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-1 07:17:36 | 显示全部楼层
青出于蓝 发表于 2022-12-1 07:13
没有比3小的奇数质数,所以初始化为3。
除2外,没有偶数是质数,所以每次循环加2

那这个代码不打印2啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-1 17:03:40 | 显示全部楼层
本帖最后由 weimengnan006 于 2022-12-1 17:04 编辑

这个函数应该是输入一个数,找所有的质数
质数的定义是:只能被1和自身整除的数
1,最小的质数是2,若你输入2,不会进入到for循环中,直接输出质数为2
2,如果输入的数字大于2,就从3开始循环,为什么每次要+2,因为3加上1个奇数的话,就变成偶数了,肯定会被2整除,所以就不可能是质数了

所有的质数都是奇数,但并不是所有的奇数都是质数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-1 19:11:35 | 显示全部楼层
weimengnan006 发表于 2022-12-1 17:03
这个函数应该是输入一个数,找所有的质数
质数的定义是:只能被1和自身整除的数
1,最小的质数是2,若你 ...

所有的质数都是奇数,但并不是所有的奇数都是质数 错
除了2以外所有的质数都是奇数,但并不是所有的奇数都是质数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-1 22:52:52 | 显示全部楼层
除了2以外的所有奇数都是质数,直接赋值i=3是因为2就是最小的质数就不需要走循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 09:17:49 | 显示全部楼层
jhq999 发表于 2022-12-1 19:11
所有的质数都是奇数,但并不是所有的奇数都是质数 错
除了2以外所有的质数都是奇数,但并不是所有的奇数 ...

对的,疏忽了,my bad
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 11:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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