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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2010, 22:14   #1
Кинива
 
Регистрация: 09.06.2010
Сообщений: 6
Радость паскаль. нахождение простого числа

Здравствуйте,можете подсказать,что не верно в задаче :
у из интервала от A до B найти все простые.Определение простоты числа оформить в виде функции.
я сделала но не полностью, надо чтоб 2 и 3 тоже писались

Код:
uses crt;
 
var s,i,a,b:integer;
function  vot(a,b:integer):integer;
begin
writeln(' nahodim proctye chisla ');
readln(a,b);
 
writeln ( 'interval chisel ot a=',a,' do b=',b);
 
   for i:=а to b do begin \\ сдесь пишет ошибку 
     if i mod 2 <>0 then
        if i mod 3 <>0 then
 
     writeln(i);
 
     end;
 
end;
 
begin
vot(a,b);
readln;
end .
Кинива вне форума Ответить с цитированием
Старый 09.06.2010, 22:27   #2
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

можно дописать строку if (i = 2) or (i = 3) then writeln(i)

и зачем вы пишите формальные параметры функции если в самой функции используете readln(a,b)

да и вообще, простое число - это число, делителями которого являются 1 и само это число. Например число 407 не является простым, т. к. оно делится на 1, 11, и 407 (а может и еще на какое). А по вышему алгоритму получается что оно простое, т. к. 407 mod 2 <> 0 и
407 mod 3 <> 0

можно искать простые числа так:

Код:
for i:=a to b do
    begin
        flag:=true;
        for j:=2 to i-1 do
          if (i mod j) = 0 then
                               begin
                                 flag:=false;
                                 break;
                               end;
        if flag then writeln(i);
    end;
ICQ: 593-013-807

Последний раз редактировалось Stilet; 11.03.2011 в 08:22.
Don Karleone вне форума Ответить с цитированием
Старый 09.06.2010, 22:48   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну, добавлю ещё один вариант:

Код:
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, a, b : LongInt;
begin
  Readln(a,b);
  WriteLn('Простые числа в диапазоне от ',a:1,' до ',b:1); 
  for i:=a to b do
    if isPrime(i) then WriteLn(i:1);

  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2010, 22:54   #4
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

[QUOTE=Serge_Bliznykov;550011]ну, добавлю ещё один вариант:

Код:
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, a, b : LongInt;
begin
  Readln(a,b);
  WriteLn('Простые числа в диапазоне от ',a:1,' до ',b:1); 
  for i:=a to b do
    if isPrime(i) then WriteLn(i:1);

  readln;
end.
да, да, да... ведь все четные числа большие 2 не являются простыми. А соответственно просматривать надо только нечетные. Это мне как-то в голову не приходило.
ICQ: 593-013-807

Последний раз редактировалось Stilet; 11.03.2011 в 08:22.
Don Karleone вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение хроматического числа Pti44ka Общие вопросы .NET 0 05.05.2010 16:13
граница проверки простого числа fs444 Общие вопросы C/C++ 4 24.03.2010 20:11
[C] Нахождение наибольшего простого пути wolfram Помощь студентам 0 29.11.2009 12:33