C语言求2~n中质数的个数

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