关于整数的一个问题
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;
calculate_(n,1);
system("pause");
return 0;
}
以上由dev-c++ 4.9.9.2编译通过.
上面的程序还不完善,临时想的,重复的问题没有的到解决.
本人也才自修c++,有什么不对的,望请教.