Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Цикл, простые числа

Автор: GUTALIN 21.11.2008 3:07

Граждане, помогите. Программа в турбо паскале: Напечатать все простые делители заданного натурального числа.
Не работает то, что находится в коментарии. Или как еще можно вывести эти простые числа? Помогите исправить пожалуйста


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 21.11.2008 4:37

Цитата(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 21.11.2008 4:43

Спасибо, исправил)

Автор: Lapp 21.11.2008 4:46

См. мое исправление

Автор: Lapp 21.11.2008 9:04

Что-то я сейчас посмотрел, а задание-то:

Цитата(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;