子程序:
int fflag(int i) //待判定的整数i
{
int j;
if(i <= 1)
return(0);
if(i == 2)
return(1);
if(!(i%2)) //除了2,偶数一定不是素数
return(0);
for(j = 3; j < (int)(sqrt((double)i) + 1); j += 2) //对“2开始到该整数的平方根”进行整除判断;“+1”是为了补偿精度的缺失
{
if(!(i%j))
return(0);
}
return(1);
}
Q:判断一个数是否是素数,为什么除到其平方根就可以了?
A:因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。
这种判定方法相较于“2开始到该整数的一半”运算量更小。