码迷,mamicode.com
首页 > 其他好文 > 详细

AOJ 0009 Prime Number

时间:2017-08-21 18:52:24      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:++i   tom   oat   art   include   display   输入   ++   add   

题意:给出n,求不大于n的素数有多少个。

算法:先用线性时间复杂度的筛法打素数表,对于每个输入统计不超过的素数个数。

#include <cstdio>

int p[100010];
bool np[1000010];
int cntp;

void SievePrime(int n) {
	for (int i = 0; i <= n; ++i) np[i] = true;
	np[0] = false, np[1] = false;
	for (int i = 2; i <= n; ++i) {
		if (np[i]) {
			p[cntp++] = i;
			for (int j = 2 * i; j <= n; j += i) {
				np[j] = false;
			}
		}
	}
}

int main() {
	SievePrime(1000000);
	int n;
	while (scanf("%d", &n) != EOF) {
		int ans = 0;
		for (int i = 2; i <= n; ++i) {
			if (np[i]) ++ans;
		}
		printf("%d\n", ans);
	}
	return 0;
}

AOJ 0009 Prime Number

标签:++i   tom   oat   art   include   display   输入   ++   add   

原文地址:http://www.cnblogs.com/demian/p/7405939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!