e-olymp 842. Разложение на простые множители

Условие задачи
Вывести представление целого числа [latex] n [/latex] в виде произведения простых чисел.

Входные данные
Единственное число [latex] n [/latex] [latex] (2 ≤ n ≤ 2^{31} — 1). [/latex]

Выходные данные
Вывести список простых множителей в порядке не убывания, разделённых знаком [latex] «*» [/latex] .

Тесты

Входные данные Выходные данные
[latex]30[/latex] [latex]2*3*5[/latex]
[latex]16[/latex] [latex]2*2*2*2[/latex]
[latex]5[/latex] [latex]5[/latex]
[latex]12[/latex] [latex]2*2*3[/latex]
[latex]7[/latex] [latex]7[/latex]
[latex]144[/latex] [latex]2*2*2*2*3*3[/latex]

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

Решение задачи
Пока наше число больше либо равно divisor*divisor выполняется:

  1. Если numb делится нацело на divisor, мы выводим наш делитель, следовательно numb делится на divisor;
  2. В противном случае:
    • Если divisor равен $2$, то присваиваем ему значение $3$ и повторяем;
    • В другом случае увеличиваем его на $2$;

Таким образом перебираются $2,3$ и $5$, которые являются делителем для всех чисел.

Ссылки

  • Задача на сайте E-olymp
  • Код решения в Ideone

Related Images:

3 thoughts on “e-olymp 842. Разложение на простые множители

    • Пожалуйста, определитесь с отступами. С сентября занимаемся. Уже бы пора.
    • Не очень удачные именования. Исходите из этого: In division, the dividend is divided by the divisor to get a quotient.
    • Просмотрите внимательно, что у Вас получилось и поправьте всякие & lt
    • Тип данных выбран излишне большим
    • Подумайте, как избавиться от лишнего цикла. Это сократит программу почти вдвое. Ведь это все накручено только чтобы определить нужна ли *?
    • Игорь Евгеньевич, исправил. Теперь вместо 3-х циклов всего 1.

  1. Хорошо, только соедините 11 и 113ю строку в одной команде печати.
    У меня тоже похоже получалось:

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