关于求一个数是否是素数的小疑问(菜鸟提问)
关于求一个数是否是素数的小疑问, 呵呵, 原程序如下:
#include "math.h "
void main()
{int m,i,k;
scanf( "%d ",&m);
k=sqrt(m);
for(i=2;i <=k;i++) 已上前面几句我都明白.只是下面这句不太懂
if(m%i==0) break; 这是用输入的数m除于i , 如果余数是0,那就是 真,是真就执行break语句.那就是可以整除了.那 么,可以整除就应该不是素数了, 那么下面为什么
又还要判断下面一句 i> k 呢?
if (i> k)printf( "%d是素数 ",m)
else printf( "%d是合数 ",m);
}
[解决办法]
如果i> k,说明没有一个i满足m%i==0,则说明它没有一个数可以整除(不算1),那么它是素数,
如果i <k,说明肯定执行了这句if(m%i==0),break,说明它有因子
感觉你首先应该明白什么是素数,怎么判断一个素数,用什么方法你再看下程序吧,或者写个算法,画个流程图等等
[解决办法]
下面的判断就是要看是break出来的还是循环完结束的