IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> простые числа, простая но не рабочая функция
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день!
написал свою функцию проверяющею простоту числа, а она не работает. Покажите пожалуйста ошибку.
var
den,d:integer;
function simple(a:integer):boolean;
var
i: integer;
begin
simple:=true;
i:=2;
while (i< (trunc(sqrt(a)) )) and (simple=true)do begin
if a mod i = 0 then simple:=false;
inc(i);
end;
end;
begin
ReadLn(d);

for den:=0 to d do begin
if simple(den)=true then
writeLn(den);
end;
ReadLn(d);
end.

Заранее благодарен
ЗЫ да, я знаю про то что в ЧаВо есть подобная функция..

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
я знаю про то что в ЧаВо есть подобная функция..


И чем она тебе не понравилась ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(klem4 @ 29.04.2007 15:27) *
И чем она тебе не понравилась ?
Exit-ом.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +





function simple(a:integer):boolean;
var
i: integer;
s: boolean;
begin
s:=true;
i:=2;
while (i<= (trunc(sqrt(a)) )) and (s=true)do begin
if a mod i = 0 then
s:=false;
inc(i);
end;
simple := s;
end;


ps
Можно сделать и без exit'a в одну строчку ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


klem4, конечно спасибо но почему при знаке < вместо <= функция работает не коректна


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


потомучто максимальным делителем числа может быть значение равное квадратному корню из этого числа, а при строгом неравенстве это не учитывается

вот такой вариант еще:
function Simple(n, i: Integer): Boolean;
begin
if i > trunc(sqrt(n)) then Simple := true else
if (n mod i = 0) then Simple := false else simple := (Simple(n, i + 1));
end;


вызов

 for i := 1 to 20 do
if simple(i, 2) then writeln(i);




--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 11:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name