Помощь - Поиск - Пользователи - Календарь
Полная версия: Цикл, простые числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
GUTALIN
Граждане, помогите. Программа в турбо паскале: Напечатать все простые делители заданного натурального числа.
Не работает то, что находится в коментарии. Или как еще можно вывести эти простые числа? Помогите исправить пожалуйста

program pyatpyatodin;
uses crt;
var n, t, i: integer;
begin
clrscr;
writeln ('vvedite n');
readln (n);
if n>0 then
begin
for i:=1 to n do
begin
T:= n mod i;
if t = 0 then
{if ((i mod 2)=0) or ((i mod 3)=0) or ((i mod 5)=0) then else}
writeln (i);
end;
end;
readln;
end.

Lapp
Цитата(GUTALIN @ 20.11.2008 23:07) *
Не работает то, что находится в коментарии.

А что значит "не работает"? Что ты от него ждешь?
Можно, например, так:
i:=2;
Pr:=true;
repeat
if n mod i=0 then begin
if Pr then WriteLn(i);
Pr:=false;
n:=n div i;
end
else begin
Inc(i);
Pr:=true
end
until n<=i;


Добавлено через 1 мин.
масса возможностей для оптимизации smile.gif

Исправил (добавлена вторая строка)
GUTALIN
Спасибо, исправил)
Lapp
См. мое исправление
Lapp
Что-то я сейчас посмотрел, а задание-то:
Цитата(GUTALIN @ 20.11.2008 23:07) *
Напечатать все простые делители заданного натурального числа.
- то есть не нужно избегать повторений, что я старательно делал.. Тогда еще проще:
i:=2;
repeat
if n mod i=0 then begin
WriteLn(i);
n:=n div i
end
else Inc(i)
until n<=i;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.