判断一个数是否为素数(自编的)
本帖最后由 小草远在天涯 于 2010-11-8 18:48 编辑#include "stdio.h"
main()
{
int m,i,x;
x=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
if(m%i==0)
x+=1;
}
if(x>2)
printf("该数不是素数!");
else
printf("该数是素数!");
}
思路:素数就是除了1和它本身之外不能被除的整数。也就是说素数只能被两个数相除,一个是1,另一个是它本身。那就简单了,只要判断是否有1和它本身之外的数,就行了。
教材上在搞什么啊!我到现在还是不明白,真是看不懂!
我教材的程序是这样的。
#include "stdio.h"
#include "math.h"
main()
{
int m,i,x;
scanf("%d",&m);
x=sqrt(m);
for(i=2;i<=x;i++)
if(m%i==0)break;
if(i>x)printf("%d是素数",m);
else printf("%d不是素数",m);
}
后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍 后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍