Другие языки программирования и технологии

как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"

как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
Aibek Utegaliyev
Aibek Utegaliyev
126
Считаете цикл от 2 до n/2. На каждом шаге делите, пока остаток равен нулю и выводите на экран. Простые числа так и пойдут.

Александр: Остаток деления на 1 любого числа - нуль, так что ваша программа не сработает :)
Плюс к примеру у числа 8 - простые множители - 2*2*2, а у вас 2*4.

Зло: На самом деле, если брать и делить тоже самое 24 (2*2*2*3) (к примеру) на 2, пока остаток нуль, то дальше на числа кратные 2-м мы уже не поделим (поделили на первой итерации) , то есть 4, 8 и прочие просто пройдут мимо.
Bahodir Murodillayev
Bahodir Murodillayev
34 701
Лучший ответ
Есть простой метод и сложный метод. Простой метод: проходим все числа от 2 до n/2 -1 и делим n на это число. Если делится, то результат деления в n, а делитель запоминаем. Пока n не поделится до 1.
Проще простого… Главное знать с чего начать:

Введите N = 123456
Число 123456 можно разложить на простые множители: 2x3 + 3 + 643

Введите N = 123457
Число 123457 простое.

Игорь Лебедев
Игорь Лебедев
64 592
мне одному кажется, что перечисленными методами вы найдете делители, но не убедитесь в том, что они простые?
т. е. найдя делитель, не надо сразу его выводить. делаешь еще 1 цикл от 2 до x/2 и проверяешь, что у х нет делителей. тогда - простое.
RR
Rif Rafikov
38 447
for i : = 1 to n do if n mod i = 0 tnen inc ( count )

Похожие вопросы