A 325. Простые делители числа

Задача
Дано натуральное число [latex]n[/latex]. Получить все простые делители этого числа.

Входные данные
Натуральное число [latex]n[/latex]

Выходные данные
Все его простые делители напечатанные через пробел

Тесты

входные данные выходные данные
2 2
7 7
50 2 5 5
169 13 13
583 11 53
2368 2 2 2 2 2 2 37
73890 2 3 3 5 821
885066 2 3 7 13 1621
6943960340 2 2 5 97 1787 2003

Код программы

Решение задачи
Для решения задачи мы проверяем все числа от 2 до [latex]\sqrt{n}[/latex]. Если число является делителем [latex]n[/latex], то мы его выводим и делим [latex]n[/latex] на это число. Повторная проверка на простоту не требуется так как мы ведем поиск снизу, а значит число полученное после проверки уже не может делиться на составное. В конце, если остается простой делитель больше, то он выводиться так же.

Ссылки

Related Images:

3 thoughts on “A 325. Простые делители числа

  1. — Отступы!
    — Для компилятора на IDEone.com максимальное число для выбранного вами типа данных ULLONG_MAX = 18446744073709551615 (2^64-1). Корень из этого числа почти 4294967296. А в переменную int поместится не боле чем INT_MAX = 2147483647. Это означает, что для ряда квадратов больших простых чисел цикл будет работать неверно. Например, Ваша программа зациклится для 18446744030759878681. А должно быть так.
    Да и при исправлении этой ошибки вряд ли мы дождемся окончания работы Вашей программы для такого числа. Стоит глубже вникнуть в алгоритмы факторизации. Их вообще много и до сих пор не знают найдет ли лучший (самый быстрый).
    Добавьте, пожалуйста предложенный мной тест и добейтесь, чтобы программа его прошла.

    • Исправил ошибку типа данных. Пройти тест так и не смог, хоть и ознакомился с алгоритмами факторизации.
      К сожалению, я не смог их грамотно запрограммировать либо найти достойную реализацию.

Добавить комментарий