假设n是一个正整数,它的值不超过1000000,请编写一个程序,将n分解为若干个素数的乘积。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入一个正整数n(1< n ≤1000000)。
输出格式:
每组测试对应一行输出,输出n的素数乘积表示式,式中的素数从小到大排列,两个素数之间用一个“*”表示乘法。若输入的是素数,则直接输出该数。
输入样例:
2
9828
88883
输出样例:
2*2*3*3*3*7*13
88883
代码如下,老实说来此题并不难,细心一点就行了。
#include <stdio.h>
int fun(int n)
{
int i,flag=0;
for(i=2;i<n;i++)
{
if(n%i==0)
{
flag=1;
break;
}
}
if(flag==0)
{
printf("%d",n);
return 0;
}
int tmp=n;
if(flag==1)
while(tmp!=1)
{
for(i=2;i<n;i++)
{
if(tmp%i==0)
{
tmp/=i;
if(tmp==1)
{
printf("%d",i);
break;
}
printf("%d*",i);
break;
}
}
}
}
int main()
{
int n,i;
scanf("%d",&n);
while(n)
{
scanf("%d",&i);
fun(i);
printf("\n");
n--;
}
return 0;
}
亲测有用!!喜欢就点个赞吧。