求 2~n(n≥2)中有多少个质数。该示例综合使用了C语言中的选择结构、循环结构、函数等知识点。
要统计 2~n 中质数的个数,首先要判断其中的每一个数是否是质数,而且判断质数的运算总共需要进行 n-1 次。
可以设计一个用于判断整数 x 是否为质数的函数 prime(x),并将该函数的返回值类型定义为 int 型,返回值为 1 时,表示 x 是质数,返回值为 0 时,表示 x 不是质数。
代码清单 2:求 2~n(n≥2)中有多少个质数
#include <stdio.h>
#include <stdlib.h>
int prime(int x) //判断x是否是质数的函数并打印质数
{
int j=2;
if(x==2) {
printf("%d ",x);
return 1;
}
while(x%j!=0 && j<=sqrt(x))
j++;
if(x%j==0) return 0;
else {
printf("%d ",x);
return 1;
}
}
int main( )
{
int i,n,ans=0;
printf("请输入一个大于2的正整数:");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(prime(i)) ans++;
printf("\n2~%d之间有%d个质数。\n",n,ans);
system("pause");
return 0;
}
运行结果为:
请输入一个大于2的正整数:17
2 3 5 7 11 13 17
2~17之间有7个质数。