代码如下:
//终曲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作为计数器,统计一共有几个素数,最后输出结果。
下为程序运行结果图: