bool isPrime(int num) {
int divisor = 3;
int testLimit = num;
if (num % 2 == 0) return -1;
while ( testLimit > divisor )
{
if ( num % divisor == 0 )
{
return -1;
}
testLimit = num / divisor;
divisor += 2;
}
return 1;
}
int main()
{
int iNum = 0;
int iFlag = 0;
printf("输入一个正整数:\n");
scanf("%d",&iNum);
iFlag = isPrime(iNum);
if (iFlag == 1)
{
printf("%d是素数\n", iNum);
}
else
{
printf("%d不是素数\n", iNum);
}
}因为一个数的因子最大的是它的开平方,以后的都是以前的重复,因此判断其有没有素数的因子只需判断到它的开平方就好了,
因此这句写成
for (i = 2; i <= sqrt(x); i++)就更好了\素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~(m-1)之间的每一个整数去除,如果都不能被整除,那么m就是一个素数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)