题目链接:http://acm.fzu.edu.cn/problem.php?pid=1075
思路:分解素因子
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=65535+5;
typedef long long LL;
bool prime[maxn];
int p[maxn/10];
int k;
void isprime()
{
k=0;
LL i,j;
memset(prime, true, sizeof(prime));
for(i=2; i<maxn; i++)
{
if(prime[i])
{
p[k++]=i;
for(j=i*i; j<maxn; j+=i)
{
prime[j]=false;
}
}
}
}
int num[1000];
int fac[maxn];
int cnt;
void fenjie(int m)
{
memset(num, 0, sizeof(num));
cnt=0;
for(int i=0; p[i]*p[i]<=m&&i<k; i++)
{
if(m%p[i]==0)
{
fac[cnt]=p[i];
while(m%p[i]==0)
{
num[cnt]++;
m/=p[i];
}
cnt++;
}
}
if(m>1)
{
fac[cnt]=m;
num[cnt++]=1;
}
}
int main()
{
int t;
isprime();
scanf("%d",&t);
while(t--)
{
int m;
scanf("%d",&m);
fenjie(m);
//cout<<"cnt="<<cnt<<endl;
for(int i=0; i<cnt-1; i++)
{
for(int j=0; j<num[i]; j++)
{
cout<<fac[i]<<"*";
}
}
for(int i=0; i<num[cnt-1]-1; i++)
cout<<fac[cnt-1]<<"*";
cout<<fac[cnt-1]<<endl;
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-07 15:29:49