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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 13:59   #1
SanechekS
Новичок
Джуниор
 
Регистрация: 05.04.2011
Сообщений: 1
По умолчанию Простые числа

Помогите пожалуйста написать прогу для нахождения простых чисел в заданном пользователе интервале (от а до b) например. * Простое число- число которое делится на 1 и на само себя. Буду очень благодарен.

Последний раз редактировалось SanechekS; 05.04.2011 в 14:07.
SanechekS вне форума Ответить с цитированием
Старый 05.04.2011, 14:31   #2
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Код:
function Check(Number: integer):boolean;
var 
i: integer;
begin
Result:=true;
If Number=[1..2] then Exit;
for i:=2 to Number do
if int(Number/i)=Number/i then Result:=false;
end;
поправьте меня пожалста если я не прав...
уууупс, это не паскаль, хотя какая разница

Код:
if (Number mod i)<>0 then Result:=false;
- вот так будет правильно?
чего то я запутался совсем...

Последний раз редактировалось BoozZzilla; 05.04.2011 в 14:46.
BoozZzilla вне форума Ответить с цитированием
Старый 05.04.2011, 14:54   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

BoozZzilla, нет, не правильно...
тогда уж if (Number mod i) = 0 then Check := false;
ну и ещё есть ошибки...

рекомендую использовать такую функцию для проверки числа на простоту (хотя, Вы не поверите, СКОЛЬКО раз эта функция здесь на форуме была (в самых разных вариантах!):
Код:

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;

Последний раз редактировалось Serge_Bliznykov; 05.04.2011 в 14:57.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.04.2011, 14:59   #4
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

А почему проверка только до корня?
BoozZzilla вне форума Ответить с цитированием
Старый 05.04.2011, 15:03   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Мне это тоже интревно, вернее, мне интересно причём тут корень квадратный, всё остальное понятно.

Кстати, предлагаю небольшую модификацию этой функции:

Код:
if x<=2 then Exit;
     if not odd(x)  { проверяем на чётность  }
          then exit;

Последний раз редактировалось Вадим Мошев; 05.04.2011 в 15:06.
Вадим Мошев вне форума Ответить с цитированием
Старый 05.04.2011, 15:23   #6
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Кстати вот. Методов программного определения простого числа предостаточно.
К теореме Вильсона даже есть код на Си++
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 05.04.2011 в 15:26.
MyLastHit вне форума Ответить с цитированием
Старый 05.04.2011, 15:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Мне это тоже интревно, вернее, мне интересно причём тут корень квадратный
не, ну подумайте, если число кратно какому-то числу, то тогда число может быть записано как
Число M := A * B;
Очевидно, что для любых целых чисел A и B меньшее из этих чисел ВСЕГДА будет меньше (или равно) корню из M
(доказательство этой несложной теоремки оставляю читателю)...

Цитата:
Кстати, предлагаю небольшую модификацию этой функции:
Код:
if x<=2 then Exit;
Это ошибочная модицикация. Число 2 является ПРОСТЫМ! А после вашей корректировки это уже не будет так, что является ошибкой!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простые числа. С++ mephistophel Помощь студентам 3 03.02.2011 22:12
простые числа Koko Shanel' Помощь студентам 2 08.09.2010 01:13
Простые числа Verochka Помощь студентам 14 02.12.2008 20:30
Простые числа werser Помощь студентам 8 18.06.2008 07:24