题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1164
#include<stdio.h>
#include<string.h>
int prim[66000];
void check()
{
int i,j,p=1;
for(i=2;i<=32770;i++)
{
for(j=2*i;j<=65540;j+=i)
{
prim[j]++;
}
}
for(i=2;i<=65540;i++)
if(prim[i]==0) prim[p++]=i;
}
int main()
{
memset(prim,0,sizeof(prim));
check();//素数打表
int N,i;
while(scanf("%d",&N)!=EOF)
{
int num=0;
for(i=1;i<6545;i++)
{
if(N==1) break;
while(N%prim[i]==0)
{
num++;
N=N/prim[i];
if(num!=1) printf("*");
printf("%d",prim[i]);
}
}
printf("\n");
}
return 0;
}