分解素因子问题

RiweiChen RiweiChen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Problem Description
假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。
Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。
Output
每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。

以下是我的代码:
#include<iostream>
using namespace std;
int is_primer(int n)
{
for (int i=2;i<n;i++)
{
if (n%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int k,x=0;
int temp=2;
int prime[35];
int power[35]={0};
while(x<35)
{
if(is_primer(temp++))
{
prime[x]=temp-1;
x++;
}

}
int temp2=0;
cin>>k;
for (int i=0;i<k;i++)
{
cin>>x;
temp2=0;
for (int z=0;z<35;z++)
{
power[z]=0;
}
while (x>=prime[temp2])
{
while(x%prime[temp2]==0)
{
x=x/prime[temp2];
power[temp2]++;

}
temp2++;


}
power[temp2]++;
//输出结果;
int test=0;
for (int p=0;p<temp2;p++)
{
for (int pow=0;pow<power[p];pow++)
{
if(test==0)
{
cout<<prime[p];
test=1;
}
else
cout<<'*'<<prime[p];
}
}
cout<<endl;
}

return 0;
}

结果是超时的,问 有没有什么更高效的算法思路。欢迎给意见。谢谢!!!
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
RiweiChen
C++ 语言 65,214 成员 250,514 内容