//质因数分解
var
n,nn:integer; //输入的数
d:array[1..10000] of integer; //存放质数
k:array[1..10000] of integer; //存放每个质数被整除的次数
i,j:integer; //循环变量
sum:integer; //被所有质数整除次数的总和
z:integer; //质数个数
s:integer; //记录输出质数的个数
function zhisu(n:integer):boolean;
var
j,k:integer;
findd:boolean;
begin
k:=trunc(sqrt(n));
if n=1 then zhisu:=false
else if (n=2)or(n=3) then zhisu:=true
else begin
findd:=false;
j:=1;
repeat
j:=j+1;
if (n mod j)=0 then findd:=true;
until findd or (j>k);
zhisu:=not findd;
end;
end;
begin
for n:=2 to 100 do begin
// repeat
//readln(n); nn:=n; if n<=1 then break;
nn:=n;
//以下求小于n的质数并存入数组d中
z:=0;
for i:=2 to n do if zhisu(i) then begin inc(z); d[z]:=i; k[z]:=0; end;
//以下进行质因数分解
for i:=1 to z do begin
while (nn >=d[i])and(nn mod d[i]=0) do begin
inc(k[i]); nn:=nn div d[i];
end;
end;
//计算质因数个数
sum:=0;
for i:=1 to z do sum:=sum+k[i];
//输出
s:=0;
if sum<2 then writeln(n,'=',n)
else
begin
write(n,'=');
for i:=1 to z do
if k[i]>0 then
for j:=1 to k[i] do
begin
inc(s);
if s=sum then writeln(d[i]:0) else write(d[i]:0,'*');
end;
end;
//until false;
end;
end.