Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 20:21   #1
mexx1337
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 22
Хорошо Числа-близнецы и процедура

С помощью клавиатуры вводится натуральное число n. Выяснить,имеются ли среди чисел от 2 до n числа-близнецы ,т.е. простые числа ,разность между которыми равна 2. С помощью процедуры распознования является число простым или нет...

Я написал программу,но она работает немного некорректно...исправьте пожалуйста

Код:
program a29z1;
var n,h,z,ans,i:integer;
procedure pr(n:integer;var a:integer);
var i:integer;
begin
a:=0;
for i:=2 to (n div 2) do
if n mod i=0 then begin a:=1;
                        break;
                        end;
                        end;
begin
writeln('n=');
readln(n);
for i:=2 to n do begin
pr(i,h);
pr(i-2,z);
if (h=z) and (h=0) then begin
ans:=1;
writeln(i,' ',i-2);
end;
end;
if (ans=0) then writeln('takux 4ucel HET');

readln;
end.
mexx1337 вне форума Ответить с цитированием
Старый 29.04.2011, 20:40   #2
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Что то странная задача... Первая пара близнецов (3,5), те если число n>=5 то числа близнецы найдутся в любом случае.
Непонятно зачем писать программу если она состоит из простого сравнения:
Код:
if n>=5 then writeln('есть близнецы') else writeln('нет');
и решается в уме даже самого тупого человека в мире.
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 29.04.2011 в 20:42.
MyLastHit вне форума Ответить с цитированием
Старый 29.04.2011, 20:50   #3
mexx1337
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 22
По умолчанию

ну задали такую задачу,именно с помощью процедуры...препод сказал)
нужно вывести эти пары чисел...
в моём варианте начинает выводить с 0 - 2 ,1 - 3 ...в чём ошибка?!
mexx1337 вне форума Ответить с цитированием
Старый 29.04.2011, 22:36   #4
mexx1337
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 22
По умолчанию

up
ну кто-нибудь поможет?
mexx1337 вне форума Ответить с цитированием
Старый 01.05.2011, 11:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас функция (процедура) проверки числа на простоту написана с ошибками. вот и получаете такие результаты.
сделайте, хотя бы так:
Код:
procedure pr(n:integer;var a:integer);
var i:integer;
begin
if n<2 then begin
  a:=1;
  Exit;
end;
a:=0;
for i:=2 to (n div 2) do
  if n mod i=0 then 
    begin 
      a:=1;
      break;
    end;
end;
а вообще, непонятно, зачем использовать процедуру, когда можно (намного удобнее) использовать функцию:
Код:
function isPrime(X: LongInt): boolean;
var i: integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     while i <= sqrt(x) do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;

var
  i, n, ans: integer;
begin
  writeln('n=');
  readln(n);
  for i := 2 to n-2 do begin
    if isPrime(i) and isPrime(i+2) then begin
      ans := 1;
      writeln(i, ' ', i + 2);
    end;
  end;
  if (ans = 0) then writeln('takux 4ucel HET');

  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить:у=а*(в*в*в)*с,где а,в,с-двоичные числа.Для хранения числа использ.массив! Таняпервокурсница Помощь студентам 4 04.06.2010 12:08
Башни-близнецы crazy horse Свободное общение 8 29.08.2009 12:33
Процедура в процедура в C++ Builder Ecosasha C++ Builder 2 06.06.2009 17:17
близнецы... Александр! Свободное общение 13 27.02.2009 22:11
подскажите какая процедура округляет дробные числа , а не откидывает дробную часть, к ***СкаЙ*** Помощь студентам 5 13.06.2007 16:03