Помощь - Поиск - Пользователи - Календарь
Полная версия: Операторы цикла
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
В@сёк
Разложить число A на простые делители, подсчитывая, сколько раз встречается один и тот же простой делитель, а также вычислить сумму этих делителей.
Например: 792 = 2*2*2*3*3*11. Здесь число 2 встречается 3 раза, число 3 встречается 2 раза, число 11 встречается 1 раз. Сумма делителей равна 23.
Lapp
Цитата(В@сёк @ 14.12.2010 1:19) *
Разложить число A на простые делители, подсчитывая, сколько раз встречается один и тот же простой делитель, а также вычислить сумму этих делителей.
Например: 792 = 2*2*2*3*3*11. Здесь число 2 встречается 3 раза, число 3 встречается 2 раза, число 11 встречается 1 раз. Сумма делителей равна 23.
Круто.
А чего надо-то?.. blink.gif
В@сёк
ну вот само задание разложить число на простые делители. использовать операторы цикла FOR, WHILE, REPEAT.
volvo
Цитата
ну вот само задание разложить число на простые делители.
Ну вот этот процесс называется "факторизация" (правда обычно раскладывают на простые множители), и если тебе кажется, что у тебя у первого такое задание - ты очень ошибаешься. Поиск и еще раз поиск...
В@сёк
вот программу написал, только не знаю как подсчитать сколько раз встречается один и тот же простой делитель.. не подскажете как сделать?

Uses Crt;
Var
x,z,i,summa:integer;
Begin
clrscr;
write('Vvedite X=');
read(x);
z:=x;
for i:=1 to 1000 do
if i<>1 then
if (x mod i)=0 then
Begin
x:=x div i;
write(i);
summa:=summa+i;
if x<>1 then write('*');
if i<>2 then dec(i)
else i:=1;
end;
writeln('=',z);
writeln('summa=',summa);
readkey;
end.
-Volvo-
Цитата
вот программу написал
Да? А как ее проверить, не расскажешь? У меня она даже не компилируется. Потому что переменная i внутри цикла изменяется, что строжайше запрещено. Переделывай...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.