题目要求:对于输入一个整型的数判断是否为素数
程序思路:判断一个数为素数的本质是除了自己和1之外没有整除数的话就是素数。最差的做法就是从小于这个数和大于2这个范围内的所有整数都扫一遍。蛮横法表现出来的效率就是太低,为了寻找更好的效率,经过不断的总结规律,人们发现,判断一个数是否为素数不用比较太多,只需要跟他的开根号内的数来判断是否有该数的因子。算法还对1和2做了修补,1和2是特殊的质数。使得算法的适应性更强,效率更高。下面是算法实现:
#include <stdio.h>
#include <math.h>
bool adjustPrime(int Num)
{
bool Result = false;
do
{
if(Num <= 0)
{
printf("Please input number more than 0!");
break;
}
if(Num == 1 || Num == 2)
break;
int Factor = sqrt(Num);
for(int i = 2;i <= Factor; i++)
if(!(Num%i))
{
Result = true;
break;
}
}while(false);
return Result;
}
int main()
{
printf("%d\n",adjustPrime(2));
printf("%d\n",adjustPrime(20));
return 0;
}
输出的结果如下(运行平台是C-free):