1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <cmath> 7 8 #define MAX 1000000 9 10 using namespace std; 11 int num[MAX]; 12 13 int main(int argc, char const *argv[]) 14 { 15 for(int i = 0; i < MAX; i++) { 16 num[i] = i; 17 } 18 num[1] = 0; 19 for(int i = 2; i * i < MAX; i++) { 20 if(num[i] != 0) { 21 for(int j = i+i; j < MAX; j += i) { 22 num[j] = 0; 23 } 24 } 25 } 26 for(int i = 2; i < MAX; i++) { 27 if(num[i] != 0) { 28 printf("%d\t",num[i]); 29 } 30 } 31 getchar(); 32 return 0; 33 }
在纸上写MAX个数,逐一挖掉合数,精髓在于第20行和21行。
时间: 2024-10-11 04:19:10