这样判断素数为什么不对啊?

2025-03-10 08:26:12
推荐回答(4个)
回答1:

问题出在:for(i=2;i为什么当 i 增加到 num 的一半就不判断了呢
如果 i 正好 × 2 就等于 num,但是系统的 条件 已经结束了,跳出循环了,那就漏判了
所以错误就出现在这里
把条件改为 i<=num/2 ,当 i 增加到 num 的一半也要判断
这样程序就完整了,判断的也是对的

回答2:

错在flag没有赋初值,
判断不是最优,一般是到sqrt(num)

回答3:

你先回答这个问题:素数是无穷多的吗?
如果你的回答也是:因为数是无穷的,所以素数也是无穷的,无需证明。那么孪生素数有无穷对的确不需要证明!

回答4:

程序逻辑错误在于标志变量flag没有初始化。
int flag可以改为int flag=0
或增加初始化语句flag=0;

判断的循环次数虽然不是最优的,但逻辑上没有错误。