“输入一个数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/04/28 12:46:19
“输入一个数M 判断是否为质数”的问题#includek+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 作为判断是不是质数的条
“输入一个数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不对吧?