c语言 求素数
#include<stdio.h>main()
{
int m,i,k,r;
scanf("%d",&m);
k=m;
for(i=2;i<k-1;i++)
{
r=m%i;
if(r==0)break;
}
if(i>=k)
printf("%d is a prime number \n",m);
else
printf("%d is not a prime number \n",m);
}
其中if(i>=k)为什么是这样?
k不是我们输入的一个数字吗
那么i作为除数,怎么会大于被除数呢?
这个代码是正确的,我看不懂 for(i=2;i<k-1;i++)
{
r=m%i;
if(r==0)break;
}
i 过了for句语后是不是应该还要自增一次?
自增后是不是应该比K要大? i从2开始,一直到m结束。
如果其中有满足m%i ==0的结果,用brak跳出循环,此时i<m,m不是素数.
如果m%i ==0一直不满足,最后i==m才会跳出循环,此时只判断等号成立就行了。大于号实际上用不到。 Mountain_gs 发表于 2019-1-6 13:51
i从2开始,一直到m结束。
如果其中有满足m%i ==0的结果,用brak跳出循环,此时i
这个程序不对吧
for(i=2;i<k-1;i++)里面应该是for(i=2;i<k;i++) Mountain_gs 发表于 2019-1-6 13:56
这个程序不对吧
for(i=2;i
for(i=2;i<k-1;i++)是没错的
如果是 for(i=2;i<k;i++)
会出现除数大于被除数的
谢谢你的回复· ba21 发表于 2019-1-6 13:51
for(i=2;i
谢谢您的回复,明白了 ba21 发表于 2019-1-6 13:51
for(i=2;i
我明白了主要不了解for,谢谢大家的回复
while <条件表达式>语句
执行过程
首先计算<表达式>的值,判断条件是否成立。
若条件为ture,刚执行语句(循环体),当循环体执行完后,将控制返回到while语句,并对<条件表达式>进行再次测试,如果仍为ture,则继续执行循环体;
如果<条件表达式>的值为false,则退出循环,执行循环体后面的语句。
for的语句
格式:for(表达式1;表达式2;表达式3) 语句
执行过程
(1)先求解表达式1。
(2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3步;若值为假(为0),则结束循环,转到第5步。
(3)求解表达式3
(4)转回上面第2步继续执行
(5)循环结束 杨德兴 发表于 2019-1-6 18:37
我明白了主要不了解for,谢谢大家的回复
while 语句
表达式2为假就退出循环体,还有什么能不明白的?
页:
[1]