素数筛选法
- 定义数组用来表示是否为素数:1为素数,2不为素数,开始全部初始化为1
- 将2的倍数全部设置为非素数
- 再将3,4,5…的倍数设置为非素数
- 这样将整个数组中的数的素数设置为1,非素数设置为0
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | |
2 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 | |
3 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
4 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
5 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
6 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
7 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
8 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
9 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 | |
10 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
#include<iostream>
using namespace std;
int a[10001];
int main(){
int T;
cin>>T;
while(T>0){
int n;
cin>>n;
for(int i=1;i<=n;i++){
a[i] = 1;
}
a[1] = 0;
for(int i=4;i<=n;i=i+2){
a[i] = 0;
}
for(int i=3;i<=n;i++){
for(int j=i+i;j<=n;j=j+i){
a[j] = 0;
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
T--;
}
return 0;
}