1 //HDU 1164
2 //输入一个数(1<x<=65535) 转化为素数的乘积()
3
4 #include "iostream"
5 #include "cstdio"
6 using namespace std;
7
8 int p[65535];//筛法求素数
9
10 void prime()
11 {
12 for(int i=2;i<65536;i++)
13 {
14 p[i]=1;
15 }
16 for(int i=2;i<65536;i++)
17 {
18 if(p[i]==1)
19 {
20 for(int j=i+i;j<65536;j+=i)
21 {
22 p[j]=0;
23 }
24 }
25 }
26 }
27 int main()
28 {
29
30 int a;
31 prime();
32
33 while(~scanf("%d",&a))
34 {
35 if(p[a]==1)//若为素数直接输出
36 {
37 printf("%d\n",a);
38 }
39 else//不为素数从小到大分解输出
40 {
41 for(int i=2;i<=a;i++)
42 {
43 if(p[i]==1)
44 {
45 if(a%i==0)
46 {
47 a/=i;
48 if(a==1)
49 {
50 printf("%d\n",i);
51 break;
52 }else
53 {
54 printf("%d*",i);
55 i=1;
56 }
57 }
58 }
59 }
60 }
61 }
62 }