求 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个质数。