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

杭电ACM1216——Assistance Required~~筛选法的应用

时间:2015-06-17 00:44:18      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:acm   杭电   

这题,一开始以为是第几个素数,后来打表之后查了一下,发现不是。

再看看题目,才知道是简单的筛选法。

每一个筛选留下来的数n,n往后的所以数,能被n整除的除去,不能的留下,筛选出3000个数出来就OK了。

下面的是AC的代码:

#include <iostream>
#include <cstring>
using namespace std;

int num[50000];
int a[3005];


int main()
{
	memset(num, 0, sizeof(num));
	int c = 0, k;
	for(int i = 2; i < 50000; i++)
	{
		if(!num[i])
		{
			a[c++] = i; k = 0;
			for(int j = i + 1; j < 50000; j++)
			{
				if(!num[j])
				{
					k++;
					if(k == i)
					{
						num[j] = 1;
						k = 0;
					}
				}
			}
			if(c >= 3000)
				break;
		}
	}
	int n;
	while(cin >> n, n)
		cout << a[n - 1] << endl;
	return 0;
}


杭电ACM1216——Assistance Required~~筛选法的应用

标签:acm   杭电   

原文地址:http://blog.csdn.net/qq_25425023/article/details/46525193

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