Регистрация
Войти
Стать экспертом Правила
Информатика

C++ или Си: Представить натуральное число N в виде произведения простых сомножителей.

ОТВЕТЫ
#include lt;iostreamgt;
#include lt;cmathgt;
using namespace std;
bool prost(int m){
int k = 0;
for (int i=2; ilt;=sqrt(m); i++)
if (m i == 0) k++;
return k==0;
}

int main(){
    int n, r;
    int i = 1;
    cout lt;lt; "n = ", cin gt;gt; n, cout lt;lt; "\n";
    if (prost(n)) {
    cout lt;lt; "1 * " lt;lt; n lt;lt; " = " lt;lt; n lt;lt; "\n";}
    else {
    r = n;
    while (r != 1){
    i++;
    if (prost(i)){
    while (r i == 0){
    r = r / i;
    cout lt;lt; i;
    if (r != 1) cout lt;lt; "*";
    }
  }
  }
  cout lt;lt; "=" lt;lt; n lt;lt; "\n";
    }
return 0;
}

Пример:
n = 2720
2*2*2*2*2*5*17=2720
#include lt;iostreamgt;#include lt;cstdlibgt;#include lt;vectorgt;bool fPrime(int n){ for (int i = 2; i lt;= n / 2; i++) if (ni == 0) return false; return true;}int main(){ int num, n, i, copy; std::vectorlt;intgt; PrimDiv; std::cin gt;gt; num; copy = num; for (n = 2; n lt;= num / 2 amp;amp; num != 0; n++) if (fPrime(n) == true) while (copyn == 0) { PrimDiv.push_back(n); copy /= n; } std::cout lt;lt; num lt;lt; "="; if (PrimDiv.empty()) std::cout lt;lt; num; else { for (i = 0; ilt;PrimDiv.size() - 1; i++) std::cout lt;lt; PrimDiv[i] lt;lt; "*"; std::cout lt;lt; PrimDiv[PrimDiv.size() - 1]; } system("pause"); return 0;}
285
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам