从键盘输入一整数n,计算从1到n中的素数个数共有多少

it2023-10-26  106

代码如下:

//终曲cc-学习之路 #include <stdio.h> #include <math.h> int main() { long long int t,j,u=0; int isprime(int n); printf("请输入一个数:"); scanf("%d",&t); for(j=1;j<=t;j++) { if (isprime(j)==1) u++; } printf("从1到%d总共有%d个素数。",t,u); return 0; } int isprime(int n) { int i; if(n==2) return 1; else if(n==1||n%2==0) return 0; for (i=3;i<=sqrt(n)+1;i+=2) { if(n%i==0) return 0; } return 1; }

作者采用的方法是首先将1,2,以及除2以外的所有偶数拿出来,1和除2的所有偶数都不为素数,则return 0;2为素数,则return 1。

接下来判断从3开始的所有奇数是否为素数,采用n与从3开始一直比较到根号n的商是否为0的方式。若为非素数,则return 0;若为素数,则return 1。

在main函数中用变量u作为计数器,统计一共有几个素数,最后输出结果。

下为程序运行结果图:

最新回复(0)