Разложение натурального числа на простые множители
Задача: найти разложение натурального числа на простые множители (факторизация числа).
Исходный код на языке C++
#include <iostream>
#include <vector>
using namespace std;
template <typename intT>
vector<intT> fact(intT num) {
intT j = 2;
vector<intT> res;
while (num / intT(2) >= j) {
if (num % j == 0) {
res.push_back(j);
num /= j;
j = intT(2);
}
else {
++j;
}
}
res.push_back(num);
return res;
}
//typedef unsigned long integralT;
typedef __int64 integralT;
int main() {
vector<integralT> v;
integralT n;
while (true) {
cout << "Enter positive number: ";
cin >> n;
v.clear();
v = fact(n);
for (auto i = v.begin(); i != v.end(); i++) {
if (i != v.begin())
cout << ", ";
cout << *i;
}
cout << endl << endl;
}
return 0;
}