标签:
1 #include <stdio.h> 2 #include <math.h> 3 #include <queue> 4 #include <vector> 5 #include <stack> 6 #include <map> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <iostream> 11 using namespace std; 12 #define N 1000000 13 int a[N]; 14 void pd(){ 15 int n=0,i,t,j; 16 memset(a,0,sizeof(a)); 17 for(i=2;i<=N;i++)//对当前数的每个数的倍数进行赋值素数编号 可以覆盖哦 因为要覆盖为最大因子 18 { 19 if(a[i]==0) 20 { 21 n++;//素数i的位置 22 for(j=i;j<=N;j+=i)//构造出j的暂时最大素数因子的位置 23 a[j]=n; 24 } 25 } 26 } 27 int main() 28 { 29 int i; 30 pd(); 31 while(~scanf("%d",&i)) 32 { 33 printf("%d\n",a[i]); 34 } 35 return 0; 36 }
标签:
原文地址:http://www.cnblogs.com/wangmengmeng/p/4705341.html