Организация подпрограм. Простые числа (Pascal)

Ответить
Аватара пользователя
Justice
Сообщения: 4
Зарегистрирован: 11 мар 2007, 16:31
Откуда: Kyiv

помогите решить задачу...
Дано натуральное число n. Выяснить, есть ли среди чисел n, n+1, 2n близнеци, т.е. простые числа, разница между которыми равняется двум. Опредилить процедуру, которая разрешает различать простые числа.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

http://forum.developing.ru/showthread.php?p=34426
А дальше - цикл от n до 2n-2: если n и n+2 - простые, вернуть да, если нет - вернуть нет.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Justice
Сообщения: 4
Зарегистрирован: 11 мар 2007, 16:31
Откуда: Kyiv

Хыиуду писал(а):http://forum.developing.ru/showthread.php?p=34426
А дальше - цикл от n до 2n-2: если n и n+2 - простые, вернуть да, если нет - вернуть нет.
К сожалению, нужно чтобы простые числа определяла не функция, а процедура...
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

К сожалению, нужно чтобы простые числа определяла не функция, а процедура...
Да... Кто же интересно тебе такое условие поставил?
Тебе советуют как лучше, потому что функция, в отличии от процедуры, всегда имеет результативное значение, а в данном случае - true если число простое, иначе false...

Код: Выделить всё

uses crt;
var result: boolean;
procedure simple(x:longint);
  var i:longint;
begin
  for i:=2 to x div 2 do
    if x mod i=0 then begin
       result:=false;exit; end;
    result:=true;
end;
begin
clrscr;
simple(5);
if result then write('Простое') else write('Не простое!');
readkey;
end.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Ох... ну можно еще упаковку сделать для этой функции, чтобы она стала процедурой. Вообще Паскаль, по-моему - один из редких современных языков, где функция и процедура - это разные вещи. Во всех остальных есть только функции, которые иногда могут возвращать пустое значение.
Ну да ладно, вот тебе упаковка:
procedure issimpleproc(x:integer; var res:boolean);
begin res:=issimple(x); end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить