C/C++

ПОМОГИТЕ ПОЖАЙЛУСТА С++ - НА ВАШИ СООБЩЕНИЯ Я НЕ ОТВЕЧУ - ЛИМИТ - ЖЕЛАТЕЛЬНО ЧТОБЫ ВСЕ БЫЛО ПРАВИЛЬНО - СПАСИБО ЗАРАНЕЕ

ЗАДАНИЯ НА ФОТО
Sergei Shtil
Sergei Shtil
68
#include <iostream>
int main(){
int n, d=2; std::cout<<"N: "; std::cin>>n; std::cout<<n<<"=1";
while(n>1){while(n%d==0){std::cout<<"*"<<d; n/=d;}d++;}}
Николай Бойченко
Николай Бойченко
61 987
Лучший ответ
Вот к такой программе факторизации, которая приведена ниже и хорошо работает только при натуральных числах до ста миллионов включительно, необходимо писать обстоятельные комментарии и ещё подробную и понятную любому пользователю инструкцию по эксплуатации. А чтобы сделать надёжную и хорошо работающую программу для всех натуральных чисел, выражаемых стандартным восьмибайтным целым беззнаковым типом unsigned long long, требуется достаточно много работы на разработку, написание и доводку.
#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(); } } }
Факторизовать же, скажем, длинные двадцатипятизначные натуральные числа может оказаться непосильной задачей даже для хорошего компьютера, а при отсутствии теоретико-числовой практики -тем более...
✯ ❂ ✯ ❂ ✯ ❂ ✯ ❂ ✯
Написал-бы ответ, но не могу, тоже лимит на сообщения ;)
AT
Asilbek Tatubaev
37 945