您的位置:首页 > 其它

FZU1075 之 分解素因子

2016-12-31 15:45 441 查看
假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。

Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。

Output
每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。

Sample Input
2
11
9828


Sample Output
11
2*2*3*3*3*7*13

AC代码如下:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int fun(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
flag=0;
break;
}
}
return flag;
}

int main()
{
int n;
int x;
int a[10000];
cin>>n;
while(n--)
{
cin>>x;
int xx=x;
int num=0;
int sum=1;
for(int i=2;i<=x;i++)
{
if(x%i==0)
{
while(x%i==0)
{
a[num]=i;
sum*=i;
num++;
x/=i;
}
}
if(sum==xx) break;
}
if(num==1)
{
cout<<sum<<endl;
continue;
}
for(int i=0;i<num;i++)
{
if(i!=num-1)
cout<<a[i]<<"*";
else
cout<<a[i]<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: