Top.Mail.Ru
Ответы

Код для задачи на с++

Напишите программу, которая выполняет разложение натурального числа на простые сомножители (возможно, кратные).



Входные данные

Входная строка содержит натуральное число N .



Выходные данные

Программа должна вывести в одной строке все простые сомножители числа N , разделив их пробелами.

По дате
По рейтингу
Аватар пользователя
Мудрец
4мес

#include <iostream>
#include <vector>

using namespace std;

int main() {
long long n; // Вводим число
cin >> n;

vector<int> prime_factors; // Вектор для хранения простых множителей

// Ищем простые множители, начиная с 2
for (long long i = 2; i * i <= n; ++i) {
while (n % i == 0) { // Пока число делится на i
prime_factors.push_back(i); // Добавляем множитель в список
n /= i; // Делим число на i
}
}

// Если остаток больше 1, это тоже простой множитель
if (n > 1) {
prime_factors.push_back(n);
}

// Выводим все найденные простые множители через пробел
for (size_t i = 0; i < prime_factors.size(); ++i) {
cout << prime_factors[i] << (i < prime_factors.size() - 1 ? ' ' : '');
}

return 0;
}

Если ввести простое число, например, 97, то оно и будет выведено.