c语言求1~n素数个数

如题所述

#include "stdio.h"
int prime(int n){//判断素数
int i;
if(n>2 && !(n&1) || n<2)
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int n,m;
printf("Please enter n(int 0<n)...\nn=");
if(scanf("%d",&n)!=1 || n<1){
printf("Input error, exit...\n");
return 0;
}
printf("Between 1 and %d a total of ",n);
for(m=0;n>1;m+=prime(n--));
printf("%d prime.\n",m);
return 0;
}

运行样例:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-19
#include <stdio.h>
int isprime(unsigned long n)
{
    unsigned long i;
    if(n<2)
        return 0;
    for(i=2;i*i<=n;++i)
        if(n%i==0)
            return 0;
    return 1;
}
int main()
{
    unsigned long n,i,cnt;
    scanf("%lu",&n);
    for(i=1,cnt=0;i<=n;++i)
        if(isprime(i))
            cnt++;
    printf("%lu\n",cnt);
    return 0;
}