Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить пожалуйста на с++

Леонид Агутин Ученик (79), открыт 3 недели назад
Задача №112254. Простые делители
Напишите программу, которая выполняет разложение натурального числа на простые сомножители (возможно, кратные).



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

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



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

Программа должна вывести в одной строке все простые сомножители числа N , разделив их пробелами.
2 ответа
Asasin Bro Ученик (167) 3 недели назад
Простые числа вроде 1 2 3 5 7 и тд?
Если так то вот держи на питоне решение мне просто лень на С++ писать


 from typing import List # Чтобы типы данных тебе показывать
import math # Библиотека для математики

def prime_numbers(num: int) -> List[int]:
primes: List[int] = []

while num % 2 == 0: # Проверяет кратное ли число двум:
num /= 2
if 2 not in primes: # Можешь это удалить и тогда в primes будут абсолютно все делители с повторениями
primes.append(2)
for i in range(3, math.ceil(math.sqrt(num)), 2): # Тут сначала получают корень числа num и уже потом его через ceil как бы округляют к следующему числу ну как бы 1.13 превращается в 2
while num % i == 0: # Тоже что и при делении на 2
num /= i
if i not in primes:
primes.append(i)

if num != 1:
if num not in primes:
primes.append(int(num)) # Тут int из-за приколов питончика так как деление возвращает float ты об этом не думай

return primes
Андрей Высший разум (477789) 3 недели назад
 unsigned long long n;
cin >> n;
for (unsigned long long i = 2; i * i <= n; ++i) {
for (; n % i == 0; n /= i) { cout << i << ' '; }
}
if (n > 1) { cout << n; }
Похожие вопросы