例6.8判断m是否素数。算法如图6.14所示。
我们采用的算法是这样的:让m被2到m 除,如果m能被2~m 之中任何一个整数整除,则提前结束循环,此时i必然小于或等于k(即m);如果m不能被2~k(即m)之间的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~k之间任一整数整除过,因此输出“是素数”。
程序如下:#include <math.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m+1);/*加1是为了避免在求m时可能出现的误差*/
for (i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1) printf("%d is a Prime muber\n",m);
else printf("%d is not a Prime number\n",m);
}
运行情况如下:
17
17 is a Prime number