判断一个数是否为素数
Posted banxia20191109
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断一个数是否为素数相关的知识,希望对你有一定的参考价值。
问题:输入一个大于3的整数n,判断它是否为素数(prime,又称质数)。
思路一
采用的算法是,让n被i除(i的值从2变到n-1),如果能被2~(n-1)之中的任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环。注意:此时i的值必然小于n。
代码如下:
#include<stdio.h>
int main()
{
int n, i;
printf("please enter a integer number, n=?");
scanf("%d", &n);
for(i=2; i<=n-1; i++)
if(n%i == 0)break;
if(i<n) printf("%d is not a prime number.\n", n);
else printf("%d is a prime number.\n", n);
return 0;
}
思路二
其实n不必被2~(n-1)范围内的各整数去除,只须将n被2~n/2间的整数除即可,甚至只须被2~sqrt(n)之间的整数除即可。
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int n, i, k;
printf("please enter a integer number:n=?");
scanf("%d", &n);
k = sqrt(n);
for(i=2; i<=k; i++)
if(n%i == 0)break;
if(i <= k)printf("%d is not a prime number.\n", n);
else printf("%d is a prime number.\n", n);
return 0;
}
注:有问题,欢迎指正。
以上是关于判断一个数是否为素数的主要内容,如果未能解决你的问题,请参考以下文章