如果是素数输出本身,如果不是素数,输出其素数的乘积等于该数
input
11 9412
11 2*2*13*181
#include<stdio.h>
int a[70000];
int f()
{
int i,j;
for(i=2;i*i<=70000;i++)
{
if(!a[i])
{
for(j=2*i;j<70000;j+=i)//素数打表
a[j]=1;//非素数时值为1;
}
}
return 0;
}
int main()
{
int t,i,p,b[100],m;
f();
while(scanf("%d",&t)!=EOF)
{
if(!a[t])
{printf("%d\n",t);continue;}//是素数时直接输出,下面不用进行
p=t;m=0;
for(i=2;i<=p/2;i++)//不能直接用t,因为是变化的
{
if(!a[i])
while(t%i==0)
{
b[m]=i;
m++;
t=t/i;
}
}
printf("%d",b[0]);
for(i=1;i<m;i++)//注意格式
printf("*%d",b[i]);
printf("\n");
}
return 0;
}