题目描述 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 }