C/C++

Ребят помогите пожайлуста С++

ТОЛЬКО ЧТО БЫ БЫЛО ПРАВИЛЬНО ПРОШУ
А я специально ничего менять не буду:
#include <vector>
#include <iostream>
using namespace std; int main()
{ int i, j, k, l, m, n = 100000000;
struct factor { int a, b; } ; vector<factor> f;
factor num; bool *x = new bool[n + 1];
vector<int> prime; for (k = 0; k <= n; k++)
x[k] = true; x[0] = x[1] = false;
for (k = 2; k <= sqrt(n); k++) if (x[k])
{ l = n / k; for (m = 2; m <= l; m++)
x[m * k] = false; } prime.push_back(2);
for (k = 3; k <= n; k += 2) if (x[k])
prime.push_back(k); delete[] x;
for (;;) { cout << "n: "; cin >> n;
if (n < 2) cout << n << endl; else
{ m = n; l = 0; while (m > 1) { k = 0; j = prime[l];
while (m % j == 0) { k++; m /= j; } if (k)
{ num.a = j; num.b = k; f.push_back(num); }
else l++; } for (i = 0; i < f.size(); i++)
cout << f[i].a << '^' << f[i].b << ' '; cout << endl;
f.clear(); } } }
Это для натуральных чисел до ста миллионов включительно. Если надо факторизовать ещё бо́льшие числа, тогда надо всё капитально переделывать...
АМ
Асылбек Мештбаев
66 572
Лучший ответ
У вас что, всему классу одну и ту же задачу дали и каждый теперь на "Ответах" о ней спрашивает? Для разнообразия приведу другое решение:

#include <iostream>
using namespace std;
void find(int n, int d){
if(n==1)return; if(n%d==0){cout<<"*"<<d; find(n/d,d);}
else d==2?find(n,d+1):find(n,d+2);}
int main(){int n; cout<<"N="; cin>>n; cout<<n<<"=1"; find(n,2);}
FR
Firuz Rustamzoda
83 590
Игорь Попов ДАЙ ПОЖАЙЛУСТА СВОЙ ИНСТАГРАМ ХОЧУ ПООБЩАТЬСЯ ПО ПОВОДУ С++ СПАСИБО
Firuz Rustamzoda А вопросы ты можешь задавать в "Ответах". Тут много общающихся по C++.