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

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

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

 
 Ответить  Открыть новую тему 
> простые числа, простая но не рабочая функция
compiler
сообщение 29.04.2007 15:25
Сообщение #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 - 29.04.2007 15:38


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


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

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

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


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


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


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


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

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

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


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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.04.2007 15:35
Сообщение #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 
 К началу страницы 
+ Ответить 
compiler
сообщение 29.04.2007 15:46
Сообщение #5


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

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

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


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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.04.2007 15:51
Сообщение #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 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 24.04.2024 14:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"