HDU_2136
1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4 #include <algorithm> 5 using namespace std; 6 // hdu 2136 7 /* 8 0 1 2 3 4 5 6 7 8 9 10 11 9 1 0 1 1 1 1 1 10 1 0 1 2 1 2 1 2 1 11 1 0 1 2 1 3 2 1 2 3 12 1 0 1 2 1 3 2 4 1 2 3 13 1 0 1 2 1 3 2 4 1 2 3 14 1 0 1 2 1 3 2 4 1 2 3 5 15 16 */ 17 const int MAXN=1e6+10; 18 int prime[MAXN]={1}, pos=0; 19 20 void get_prime(){ 21 for(int i=2; i<MAXN; i++){ 22 if(!prime[i]){ 23 pos++; 24 for(int j=1; i*j<MAXN; j++){ 25 prime[i*j]=pos; 26 } 27 } 28 } 29 } 30 31 int main(){ 32 get_prime(); 33 int n; 34 while(~scanf("%d", &n)){ 35 printf("%d\n", prime[n]); 36 } 37 return 0; 38 }