cccc678 发表于 2022-11-30 22:32:51

求找质数

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也不是很理解?{:5_96:}

青出于蓝 发表于 2022-12-1 07:13:16

没有比3小的奇数质数,所以初始化为3。
除2外,没有偶数是质数,所以每次循环加2

tommyyu 发表于 2022-12-1 07:14:28

这个代码想实现什么

tommyyu 发表于 2022-12-1 07:17:36

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

那这个代码不打印2啊{:10_277:}

weimengnan006 发表于 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整除,所以就不可能是质数了

所有的质数都是奇数,但并不是所有的奇数都是质数

jhq999 发表于 2022-12-1 19:11:35

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

所有的质数都是奇数,但并不是所有的奇数都是质数 错
除了2以外所有的质数都是奇数,但并不是所有的奇数都是质数

homeskating 发表于 2022-12-1 22:52:52

除了2以外的所有奇数都是质数,直接赋值i=3是因为2就是最小的质数就不需要走循环了

weimengnan006 发表于 2022-12-2 09:17:49

jhq999 发表于 2022-12-1 19:11
所有的质数都是奇数,但并不是所有的奇数都是质数 错
除了2以外所有的质数都是奇数,但并不是所有的奇数 ...

对的,疏忽了,my bad
页: [1]
查看完整版本: 求找质数