题目:
#include<iostream>
#include<vector>
using namespace std;
void fractor(vector<int>& res,int num)
{
int i = 2;
while(num > 1)
{
if(num % i == 0)
{
res.push_back(i);
num /=i;
i = 2;
}
else
{
i++;
}
}
}
int main()
{
vector<int> res;
int num;
cin>>num;
fractor(res,num);
cout<<res[0];
for(int i = 1; i < res.size(); i++)
{
cout<<"*"<<res[i];
}
return 0;
}
原理:https://zhidao.baidu.com/question/431636683078293644.html
就是每个合数都肯定有因数,如果每个因数都是质数,他们就是合数的质因数。如果有一个不是质数,那它就是合数,所以它还能拆分一数和一个质因数相乘(因为合数一定有质因子,见百度)这样子推下去就能把这个合数分成质因子相乘了。
上面代码,有点模仿手工分解的过程,先把这个合数分一个它最小的质因子和一个数x
相乘,然后这个数x
循环这个过程(分一个它最小的质因子和一个数 xi相乘。。。)