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

0 интересует 0 не интересует
190 просмотров

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


спросил от Начинающий (408 баллов) в категории Информатика
оставил комментарий от Начинающий (482 баллов)
0 0

В смысле в виде сомножителей? n = 6, cout << "2 and 3"?

оставил комментарий от Начинающий (408 баллов)
0 0

да, так

оставил комментарий от Начинающий (482 баллов)
0 0

Сейчас попробую

2 Ответы
0 интересует 0 не интересует
ответил от БОГ (194k баллов)
 
Лучший ответ

#include
#include
using namespace std;
bool prost(int m){
int k = 0;
for (int i=2; i<=sqrt(m); i++)<br> if (m % i == 0) k++;
return k==0;
}

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

Пример:
n = 2720
2*2*2*2*2*5*17=2720

0 интересует 0 не интересует
ответил от Начинающий (482 баллов)

#include #include #include bool fPrime(int n){for (int i = 2; i <= n / 2; i++) if (n%i == 0) return false;return true;}int main(){int num, n, i, copy;std::vector<int> PrimDiv;std::cin >> num;copy = num;for (n = 2; n <= num / 2 && num != 0; n++) if (fPrime(n) == true) while (copy%n == 0) { PrimDiv.push_back(n); copy /= n; }std::cout << num << "=";if (PrimDiv.empty()) std::cout << num;else{ for (i = 0; i<PrimDiv.size() - 1; i++) std::cout << PrimDiv[i] << "*"; std::cout << PrimDiv[PrimDiv.size() - 1];}system("pause");return 0;}

оставил комментарий от Начинающий (408 баллов)
0 0

Большое спасибо!

оставил комментарий от Начинающий (408 баллов)
0 0

есть ли у Вас возможность записать эту программу в с++?

оставил комментарий от Начинающий (482 баллов)
0 0

Постараюсь

оставил комментарий от Начинающий (482 баллов)
0 0

Если не сложно - подпишись на меня - помогать и дальше буду

оставил комментарий от Начинающий (482 баллов)
0 0

Ибо я так учусь)

оставил комментарий от Начинающий (482 баллов)
0 0

+ я не сильно тебя растрою, если скажу, что это и есть с++

оставил комментарий от Отличник (9.7k баллов)
0 0

Зачем накапливать в векторе, если можно сразу выводить в выходной поток ?

...