易错
质数找到后,要循环判断是否可以再除
Description:
输入一个正整数,将它分解为质因数(质数即素数)。例如,输入90,输出90=233*5。
Input:
90
Output:
90=233*5
Sample Input:
20
Sample Output:
20=225
#include <iostream>
#include "cmath"
#include "vector"
using namespace std;
/**
* kkmd66
* @return
*/
int main() {
int n;
cin >> n;
int temp = n;
//找质数,并存储
vector<int> vec;
for (int i = 2; i <= sqrt(pow(n, 2)); ++i) {
bool flag = true;
for (int j = 2; j < i; ++j) {
if (i % j == 0) {
flag = false;
break;
}
}
while (flag && n % i == 0) {
n /= i;
vec.push_back(i);
}
}
//输出
cout << temp << "=";
for (int i = 0; i < vec.size(); ++i) {
if (i != vec.size() - 1)
cout << vec[i] << "*";
else
cout << vec[vec.size() - 1];
}
return 0;
}