2678 - 素数个数
时间限制 : 1 秒
内存限制 : 128 MB
六一”儿童节到了,五年级2的张老师组织了数素数游戏,游戏规则是这样的:张老师任意给出一个正整数M,参加游戏者说出1至M之间(包括1和M)素数的个数,谁最先说出正确的答案将会得到一个奖品。现在请你编写一个程序对给出的M,输出正确的答案。
题目输入
从文件geshu.in中读入数据,文件中只有一个正整数M(M为小于30000的正整数)
题目输出
结果输出到文件geshu.out中,只有一个数,就是1到M之间的素数的个数。
输入/输出样例
输入格式
20
输出格式
8 //说明:1到20之间共有8个素数:2,3,5,7,11,13,17,19
C++解答
#include<cstdio> #include<cstring> bool bz[1000010]; int n,t=0; int main() { scanf("%d",&n); memset(bz,true,sizeof(bz)); for(int i=2;i<=n;i++) if(bz[i]) for(int j=2;j<=n/i;j++) bz[i*j]=false; bz[1]=false; for(int i=1;i<=n;i++) if(bz[i]) t++; printf("%d",t); }