标签:输入 提前 pre integer == clu 问题: printf 思路
问题:输入一个大于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;
}
注:有问题,欢迎指正。
标签:输入 提前 pre integer == clu 问题: printf 思路
原文地址:https://www.cnblogs.com/banxia20191109/p/12122018.html