【题目描述】
输入一个数,输出其素因子分解表达式。
【输入】
输入一个整数 n (2≤n<100)。
【输出】
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。
【输入样例】
60
【输出样例】
2^2*3*5
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 10001
using namespace std;
int n;
int a[N],b[N];
void calculate(int x,int y)
{
if(x==0||y>x)
return;
while(x%y==0)
{
x/=y;
a[y]++;
}
calculate(x,y+1);
}
int main()
{
bool flag=false;
cin>>n;
calculate(n,2);
for(int i=2;i<=n;i++)
{
if(flag&&a[i])
cout<<"*";
if(a[i])
flag=true;
if(a[i]==1)
cout<<i;
else if(a[i]>1)
cout<<i<<"^"<<a[i];
}
cout<<endl;
return 0;
}
信息学奥赛一本通T1210:递归算法 因子分解 归属于 递归算法,更多同类题解源程序见:递归算法 和 因子分解
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!