1
2 #include<stdio.h>
3 #include<string.h>
4 #define Max 10005
5 int prim[Max],num[Max];
6
7 void pp() //将素数存到prim数组里面
8 {
9 memset(prim,0,sizeof(prim));
10 for(int i=2;i*i<Max;i++)
11 {
12 for(int j=i*2;j<Max;j+=i)
13 if(!prim[j])
14 prim[j]=1;
15 }
16 int x=1;
17 for(int i=2;i<Max;i++)
18 {
19 if(!prim[i]) prim[x++]=i;
20 }
21 }
22
23 void find(int n) //找每个数的因子并标记个数
24 {
25 for(int i=2;i<=n;i++)
26 {
27 int y=i;
28 for(int j=1;;j++)
29 {
30 while(y%prim[j]==0)
31 {
32 num[prim[j]]++;
33 y=y/prim[j];
34 }
35 if(y==1)
36 {
37 break;
38 }
39 }
40 }
41 }
42
43 int main()
44 {
45 int N,n,i;
46 pp();
47 scanf("%d",&N);
48 while(N--)
49 {
50 memset(num,0,sizeof(num));
51 scanf("%d",&n);
52 find(n);
53 for(i=2;i<=n;i++)
54 {
55 if(num[i])
56 {
57 printf("%d",num[i]);
58 break;
59 }
60 }
61 for(i=i+1;i<=n;i++)
62 {
63 if(num[i])
64 {
65 printf(" %d",num[i]);
66 }
67 }
68 printf("\n");
69 }
70 }
71