PASCAL ** вход с клавиатуры получаем число, не превосходящее 10^9. Вывести все его...

0 голосов
87 просмотров

PASCAL
На вход с клавиатуры получаем число, не превосходящее 10^9. Вывести все его простые делители, между ними - звездочки. Например, для числа 36 выводом должно быть 2*2*3*3.


Информатика Начинающий (503 баллов)
Дан 1 ответ
0 голосов
Начинающий (671 баллов)
 
Правильный ответ
оставил комментарий Начинающий (503 баллов)

trunc обнуляет все после запятой

оставил комментарий Начинающий (671 баллов)

Ну да, и что? Целое же количество итераций должно быть

оставил комментарий Начинающий (503 баллов)

Не дави интеллектом, объясни

оставил комментарий Начинающий (671 баллов)

xD

оставил комментарий Начинающий (671 баллов)

Ну ты понимаешь, как проверить, простое ли число?

оставил комментарий Начинающий (503 баллов)

В математике - знаю, про решето Эратосфена знаю, как это перенести в паскаль - нет, как еще и сделать это эффективно - тем более.

оставил комментарий Начинающий (671 баллов)

В Pascal ABC.net, в примерах есть программа "Решето Эратосфена". Понятия не имею, что это=D

оставил комментарий Начинающий (503 баллов)

Если ты до того, как определить, простое ли большое число, своими силами дошел, это, конечно, хорошо, но что ты тогда на этом сайте забыл? Здесь вроде как помогают понять как делать, а "решения в уме" полезны только тому, кто их умеет совершать.

оставил комментарий Начинающий (671 баллов)

Repeat
i:=i+2; - прибавляем двойку, чтобы исключить нечётные числа, т.к. все 2 мы исключили в предыдущем цикле
While A mod i = 0 do Если A не делится на i нацело, то цикл repeat ещё раз прибавит к i двойку
Begin
S:=S+'*'+IntToStr(i); Если A делится нацело на i, то i будет выведено на экран
A:=A div i Переменная A разделится на i, и цикл While снова проверит, делится ли A на то же самое i, ещё, если же нет, i снова увеличится
End
Until i>N;

оставил комментарий Начинающий (503 баллов)

Спасибо.

...