读书人

关于数是否是素数的小疑问(初学者提问)

发布时间: 2012-03-03 15:33:04 作者: rapoo

关于求一个数是否是素数的小疑问(菜鸟提问)
关于求一个数是否是素数的小疑问, 呵呵, 原程序如下:

#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出来的还是循环完结束的

读书人网 >C语言

热点推荐