这题不利用素数更简单。。
#include"stdio.h"
#include"string.h"
int map[70000];
int main()
{
int m,i,j;
while(scanf("%d",&m)!=EOF)
{
j=1;
for(i=2;i<=m;)
{
while(m%i)
i++;
m=m/i;
map[j++]=i;
}
for(i=1;i<j;i++)
{
printf("%d",map[i]);
if(i<j-1)
printf("*");
}
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<math.h>
#define N 65537
int main()
{
int k,j,i,s,m,num,a[N],pri[N],q,p;
s=(int)sqrt(1.0*N);
for(i=0;i<65537;i++)
a[i]=1;
a[0]=a[1]=0;
for(i=2;i<=s;i++)
{
if(a[i]==1)
{
for(j=2*i;j<=N;j=j+i)
a[j]=0;
}
}
k=0;
for(i=2;i<=N;i++)
if(a[i]!=0)
{
pri[k]=i;
k++;
}
q=0;
while(scanf("%d",&m)!=EOF)
{
p=0;
if(a[m]!=0)
{
printf("%d\n",m);
continue;
}
while(m!=1)
{
num=0;
while(m%pri[p]==0)
{
m=m/pri[p];
printf("%d",pri[p]);
if(m!=1)
printf("*");
}
p++;
}
printf("\n");
}
return 0;
}