关于整数的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 21:10:28
24
=2*12
=2*2*6
=2*2*2*3
=2*3*4
=3*8
=4*6 共6种表示成若干大于1的数的乘积方法
类似的,请用c或c++程序给出:输入一个数n,即能输出它的所有的乘积表示形式。

#include<iostream>
#include<cmath>
using namespace std;

int N;

int exp_(int n)
{
float tmp;
tmp=(float)n;
tmp=sqrt(tmp);
return (int)tmp;
}

void decompose_(int n)
{
for(int i=2;i<=n;i++)
{
if(n%i==0){cout<<i<<"*";decompose_(n/i);break;}
}
}

void calculate_(int n,int front)
{
int exp_n;
exp_n=exp_(n);
for(int i=2;i<exp_n+1;i++)
{
if(n%i==0)
{
if(front!=1)decompose_(front);
cout<<i<<"*"<<n/i<<endl;
calculate_(n/i,N/(n/i));
}
}
}

int main()
{
int n;
cout<<"请输入一个正整数:";
cin>>n;
cout<<endl;
N=n;