社区
新手乐园
帖子详情
关于求素数的问题
qq_46403949
2020-03-14 11:51:59
中间有一步是i==j+1 是什么意思?
...全文
155
4
打赏
收藏
关于求素数的问题
中间有一步是i==j+1 是什么意思?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寻开心
2020-03-15
打赏
举报
回复
什么时候 i==j+1 成立呢?
只有当 j为i-1的时候,这个等式才成立
前面虽然有i%j != 0, 但是这个 i==j-1 并不成立
所以, 只有当j =i-1, 也就是for (j) 这个循环运行到最后一次, 并且 i%j == 0 不成立的时候, 才能让 i==j-1 成立
这样说明, 从2到i-1任何一个都不是i的因子, 所以, i必然是素数了
这个代码效率非常的低, 有很多的地方可以优化
但是,最重要到一个问题, 这个算法把2也是素数这个情况給漏了
计算得到的aa数组里面,没有包含2这个素数, 2是最小的素数
这个函数是计算小于等于lim的所有素数,并放到aa数组里面,然后返回素数的个数
因为缺少素数2, 这个函数是错的
stephen_182
2020-03-15
打赏
举报
回复
就是过了i=j+1的时候就不需要判断了,是不是质数就确定了。不过我觉得判断到i的算术平方根向上取整就够了吧。
ipanda_zll
2020-03-14
打赏
举报
回复
第二个for循环如果顺利运行的话,只有从2到i-1,“i%j==0”都不成立时,“i=j+1”才会成立,也就是说此时,i是一个素数,因此返回的MAX值是小于等于lim的值里素数的个数减一,因为2也是素数,但是代码里的for循环会把2排除
qybao
2020-03-14
打赏
举报
回复
就是j循环到了最后一次的时候,就会到达i==j+1,能走到这里,说明i就是质数了,否则中途就break了 其实没必要放在j循环里判断,放在j循环后,的i循环里就好了 即 for (i=1; i<=lim; i++) { for (j=2; j<i; j++) { if (i%j ==0) break; } if (i==j) a[MAX++] = i; //判断放到外面来 }
C语言判断素数(
求素数
)
C语言判断素数(
求素数
) 素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。 思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~之间的每一个整数去除就可以了。如果 m 不能被 2 ~间任一整数整除,m 必定是素数。例如判别 17 是是...
关于
求素数
问题
的Java代码
求100到200之间素数与不是素数 public class TestDemo { public static void main(String[] args) { for (int number = 100; number<=200;number++) { int i = 2; for (; i <...
【C语言】
求素数
的三种方案
【C语言】
求素数
的三种方法
C语言
求素数
的两种方法
1,判断n是否能被2~n-1整除 输入的数n不能被2-(n-1)整除,说明是素数 输入的数n能被2-(n-1)整除,说明不是素数 注意:1不是素数,素数是指大于1的自然数,除了1和该数自身外,无法被其他自然数整除的数。 法一: #include<stdio.h> int main() { int i, n; printf("please input a nu...
(C++)
求素数
的方法
方法一:遍历素数法(一个个素数去判断) 找出100~200内的素数 方法二:筛选法
求素数
错误一:对筛选法的含义不清 筛选法:即通过将含有2、3、……因子的数字筛选出去来找素数。 此时,找素数的两重循环位置改变。 遍历素数法:大循环是个个数字,小循环是因子。 筛选法
求素数
:大循环因子,小循环是素数。 错误二:格式控制(每10个换行)错误。 正确解法 ...
新手乐园
33,322
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章