Определенные жизненные обстоятельства в купе с интересом к темой подтолкнули меня к написанию небольшого скрипта для разложения числа на простые числа. Сразу напомню для тех, кто запамятовал, что это за числа.
 Простые числа считаются те, которые делятся либо только на само себя, либо на 1, вот и и все. Для их определения трудно подобрать какой-то определенный алгоритм, хотя не буду говорить что невозможно. Еще давно был предложен вариант их находить по методу решете Эратосфена, когда последующие простые числа находятся путем исключения всех больших чисел, которые кратны значению уже найденных меньших простых чисел. В общем это несколько сложно объяснять с уверенностью того, что тебя поймут однозначно. Поэтому людям порой легче получать результат в виде визуализации, а еще лучше с помощью машины, которая еще все быстренько посчитает и выдаст нужных вариант. Этим я и решил заморочиться.

В целом, прежде чем работать с алгоритмом вычисления, надо придумать этот самый алгоритм. В первую очередь, так как с простыми числами не все так просто, то был взят массив этих самых чисел в диапазоне от 1 до 99999. То есть это скрипт, который будет брать простые числа из массива, для всех более высоких чисел.

Итак, первое есть массив. Второе, перебираем цикл массива до тех пор, пока значение не больше простого из нашей формы ввода, при этом значение уменьшаем делением на минимальное простое из имеющегося массива, в цикле есть условие, когда остаток при делении нашего текущего значения на минимальное простое равен 0, то есть делится на это простое без остатка, то не забываем добавлять такое простое в массив. Для того, чтобы снова проверить делится ли на это минимальное простое, добавлено отступление назад i--, которое снова проверяет это же простое "назло" циклу, который хочет уже перейти к следующему значению простого. Если же не делится без остатка, то есть условие не выполняется, то берется следующее, большее по значению простое. 

В целом это опять хоть и логично, но не показательно! Поэтому самое время перейти к работа скрипта, то есть к примеру и после к самому скрипту.

 

Пример 1

Смотреть код

* - В примере приведена форма с двумя окнами, то есть обрабатывается сразу два числа, по одному и тому же алгоритму. Это в целом не влияет ни на что, а более как комментарий к приведенному примеру. Само собой удалив часть кода можно сделать пример лишь для работы с одним числом.

* - Еще одно замечание, что в случае если простое число выходит из диапазона более 99999, то есть более того что в массиве, то само собой вычисления производится не будет.

Пример 2

второй пример будет отличаться от первого тем, что в нем не будет массива простых чисел. Мы будем перебирать от 1 до нужного нам числа все по порядку, ну почти по порядку. Так как только у нас найдется число которое делится на наше число без остатка, то мы будем уже работать с результатом частного и т.д. Плюс этого кода в том, что он намного короче. Минус в том, что в нем намного больше итераций, если сравнивать его с кодом из первого примера.

Смотреть код