1675 大质数 2

1675 大质数 2

 

 时间限制: 1 s
 空间限制: 1000 KB
 题目等级 : 钻石 Diamond
 
 
 
题目描述 Description

小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来。

小明于是交给聪明的你。请你帮忙!【wikioi-1530】

…………………………以上为背景…………………………

老师怀疑小明仅仅是找到第n个质数,于是又叫小明把1到n以内(不包括n)的质数全部找出来。小明又找到了你……

输入描述 Input Description

一个正整数n。

(1<=n<=1000000)

输出描述 Output Description

n以内的质数,每个一行。

样例输入 Sample Input

233

样例输出 Sample Output

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
211
223
227
229          //(不含n=233)

数据范围及提示 Data Size & Hint

注意优化算法

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 bool vis[1000002];int c;
 7 
 8 
 9 void sieve_method()
10 {
11     int j,i;
12     for(i=2;i<=sqrt(c+0.5);i++)
13     {
14         if(!vis[i])
15         {
16             for(j=i*i;j<c;j+=i)
17             vis[j]=1;
18         }
19     }
20     for(i=2;i<c;i++)
21     {
22         if(!vis[i])
23         printf("%d
",i);
24     }
25 }
26 
27 
28 int main()
29 {
30     scanf("%d",&c);
31     sieve_method();
32     return 0;
33 }
原文地址:https://www.cnblogs.com/sssy/p/6745411.html