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