整数因子分解
将大于1的正整数n进行因子分解,要求写出所有的分解式 例如12有8种分解式,请分别写出。
我从网上找过这些关于因式分解的博主写的,但是这道题经过小小的升级后对于一些牛人可能没有什么影响,但是对于一些刚刚入手的小白可能就有了些许难度。这道题的关键在于他不仅要求出能够分解的个数还要得出来具体的有哪几种。这是这道题的关键所在。
以下是我整理的一些代码,仅供参考。
#include<iostream>
#include<vector>
using namespace std;
vector<int> a;
int num;
int sum = 0;
int main()
{
void solve(int n);
cin >> num;
solve(num);
cout << sum ;
}
void solve(int n)
{
for (int i = 2; i <= n; i++){
if (n % i == 0){
a.push_back(i);
solve(n / i);
a.pop_back();
}
if (i == num){
a.push_back(num);
a.push_back(1);
solve(1);
a.~vector();
}
}
if (n == 1 && a.size() != 1){
vector<int>::iterator t;
for (t = a.begin(); t != a.end(); t++)
cout << *t << "\t";
sum++;
cout << endl;
return ;
}
}
以下是我运行出来的结果。
大鹏一日同风起,扶摇直上九万里。