小草远在天涯 发表于 2010-11-8 18:17

判断一个数是否为素数(自编的)

本帖最后由 小草远在天涯 于 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);
}

081270053 发表于 2010-11-8 18:34

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:34

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:35

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:35

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:35

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:35

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:36

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:36

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍

081270053 发表于 2010-11-8 18:36

后面的程序效率高,一个数最大的可能约数不会超过Sqrt(m),没有必要2--m-1全走一遍
页: [1] 2 3
查看完整版本: 判断一个数是否为素数(自编的)