从键盘上输入一个数,判断这个数是否是素数。

从键盘上输入一个数,判断这个数是否是素数。,第1张

#include <stdioh>
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就是一个素数


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13246872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-26
下一篇 2023-06-26

发表评论

登录后才能评论

评论列表(0条)

保存