“输入一个数M 判断是否为质数”的问题#include"math.h"main(){int m,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;ik+1) /*这里不明白*/printf("%d是质数\n",m);elseprintf("%d不是质数\n",m);为啥 i>k+1 作为判断是不是质数的条
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 15:25:46
![“输入一个数M 判断是否为质数”的问题#include](/uploads/image/z/1663224-24-4.jpg?t=%E2%80%9C%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E6%95%B0M+%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA%E8%B4%A8%E6%95%B0%E2%80%9D%E7%9A%84%E9%97%AE%E9%A2%98%23include%22math.h%22main%28%29%7Bint+m%2Ci%2Ck%3Bscanf%28%22%25d%22%2C%26m%29%3Bk%3Dsqrt%28m%29%3Bfor%28i%3D2%3Bik%2B1%29+%2F%2A%E8%BF%99%E9%87%8C%E4%B8%8D%E6%98%8E%E7%99%BD%2A%2Fprintf%28%22%25d%E6%98%AF%E8%B4%A8%E6%95%B0%5Cn%22%2Cm%29%3Belseprintf%28%22%25d%E4%B8%8D%E6%98%AF%E8%B4%A8%E6%95%B0%5Cn%22%2Cm%29%3B%E4%B8%BA%E5%95%A5+i%3Ek%2B1+%E4%BD%9C%E4%B8%BA%E5%88%A4%E6%96%AD%E6%98%AF%E4%B8%8D%E6%98%AF%E8%B4%A8%E6%95%B0%E7%9A%84%E6%9D%A1)
“输入一个数M 判断是否为质数”的问题#include"math.h"main(){int m,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;ik+1) /*这里不明白*/printf("%d是质数\n",m);elseprintf("%d不是质数\n",m);为啥 i>k+1 作为判断是不是质数的条
“输入一个数M 判断是否为质数”的问题
#include"math.h"
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;ik+1) /*这里不明白*/
printf("%d是质数\n",m);
else
printf("%d不是质数\n",m);
为啥 i>k+1 作为判断是不是质数的条件?
“输入一个数M 判断是否为质数”的问题#include"math.h"main(){int m,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;ik+1) /*这里不明白*/printf("%d是质数\n",m);elseprintf("%d不是质数\n",m);为啥 i>k+1 作为判断是不是质数的条
是这样的.
i是一个变量,执行
for(i=2;ik+1) 有错误,应该是:if(i>=k+1).
这个错了,应该是i>k作为判断是不是质数的条件
因为如果是质数,则退出for循环是因为i>k了,如果不是,则退出循环的条件是因为第一个if,而此时i是<=k的
if(m%i==0)
也就是m能被i整除,m不是质数,跳出循环
否则一直到循环结束
循环结束的条件,是i++以后,i>k
此时i=k+1,所以用i=k+1或i>k作为判断条件即可
i>k+1不对吧?