分解素因子问题
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;
}
结果是超时的,问 有没有什么更高效的算法思路。欢迎给意见。谢谢!!!
假设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;
}
结果是超时的,问 有没有什么更高效的算法思路。欢迎给意见。谢谢!!!
...全文
相关推荐
素因子分解,递归,c实现
#### 总结该程序是一个典型的使用递归实现素因子分解的例子,展示了如何通过递归算法高效地解决数学问题,并且通过C语言的具体实现加深了对递归原理的理解。
python求素数因子-Python入门教程:素数判断与素因子分解.pdf
在Python编程中,判断一个数是否为素数和进行素因子分解是常见的数学问题,尤其在初学者阶段。本文档提供了两种关键函数:`isprime` 和 `factor`,用于解决这些问题。
高斯整数环Z[i]、整数环Z等UFD的算术基本定理的C++程序实现
"高斯整数环Z[i]、整数环Z等UFD的算术基本定理的C++程序实现"该程序实现了高斯整数环Z[i]和整数环Z等UFD的算术基本定理的C++程序实现,主要解决了高斯整数的高斯素因子分解问题。
素因子不超过17的有限单群的新刻画
有限单群是群论中一个非常重要的概念,它是不能再分解为更小的群的群。素因子是指构成群阶(即群的大小)的素数,如果一个群的素因子不超过17,意味着构成这个群的素数只有17及以下的素数。
最高阶元素个数为28p的有限群 (2012年)
这个结论是通过一系列数学工具和引理来证明的,包括欧拉函数、素因子分解以及有限群中Sylow子群的概念。


