![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Legolas |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем привет
![]() Вот насчет задачи: Дано натуральное число п. Является ли оно простым? а вот решение >>> Код program prost; {Џа®ўҐаЄ зЁб« Їа®бв®вг (*Їа®б⮥ зЁб«®*)} Uses CRT; Var n,s: longint; Function Simple(n:longint):boolean; Var i:longint;simp : boolean { simp=false, Ґб«Ё ўбваҐвЁ«бп ¤Ґ«ЁвҐ«м зЁб« n}; begin if n=2 then Simple:=false else if n mod 2 = 0 then Simple:=false else begin simp:=true; {Здесь начало выделения;-)} [B]i:=3; while (i<=trunc(sqrt(n))) and simp do if n mod i =0 then simp:=false else i:=i+2; if simp then Simple:=true else Simple:=false end [/B] {Здесь конец выделения;-)} end; {Ћб®ў п з бвм Їа®Ја л} BEGIN clrscr; textcolor(lightgreen); write(' ‚ўҐ¤ЁвҐ зЁб«® ¤«п Їа®ўҐаЄЁ Їа®бв®вг> '); readln(n); if Simple(n) then writeln(' Yes') else writeln(' No'); readln; END. Хотелось бы подробно узнать за что отвечает выделенная часть и как она работает, уже неделю не могу разобрать... P.S. Задачу не сам делал ![]() Всем заранее спасибо. Сообщение отредактировано: Legolas - 23.05.2005 6:17 |
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
вот можно еще так, я думаю :
i:=2;flag:=true; хотя можно еще меньше цикл сделать, объявить массив a[4] = (2,3,5,7) и в цикле Сообщение отредактировано: klem4 - 23.05.2005 7:44 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hiv |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Это выделение лучше переписать вот так:
i:=3;А если не понятно как работает данный алгоритм, задавай конкретные вопросы. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
может у меня с просони мозг совсем не работает, тогда извеняйте ;) но это :
uses crt; всегда true. вру, не всегда, при n=9 и n=12 - false ![]() hiv , поясни алгоритм ![]() Сообщение отредактировано: klem4 - 23.05.2005 9:05 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Бродяжник |
![]()
Сообщение
#5
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
Выделенная часть напрямую связана со всей программой. Поэтому разбираем сначала.
Вначале проверяем, делится ли заданное число на 2. Четные числа заведомо не простые. Если же число нечетное, переходим к выделенной части. В этом цикле мы перебираем все возможные нечетные делители, начиная с 3 и заканчивая квадратным корнем из заданного числа. Поскольку для нечетного числа возможны только нечетные делители, то и шаг по i идет через двойку. А почему заканчиваем trunc(sqrt(n)), тоже понятно. Потому что корень из числа это максимальный возможный делитель. А вот что мне не нравится, так это строка в самом начале: if n=2 then Simple:=false Господа маститые, прокомментируйте pls. Неужели я забыл школьную арифметику? |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Legolas
Опять изобретаем велосипед ... Чем Этот способ не устраивает? |
hiv |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Цитата(Бродяжник @ 23.05.05 9:03) Неужели я забыл школьную арифметику? Ты абсолютно прав - это я не доглядел... Цитата(klem4) всегда true. Это был кусок кода - а вот весь: Function Simple(n:longint):boolean; -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Legolas |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем спасибо.
А насчет изобретения велосипеда, то просто я задачи ищу с помощью поисковиков... |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 13:58 |