|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.08.2019, 23:52 | #1 |
Пользователь
Регистрация: 08.08.2019
Сообщений: 20
|
[Pascal] Простое
Решить нужно на языке Pascal.
Задача такая: По данному простому числу найти следующее за ним простое. Мои мысли по задаче: пусть мы вводим какое-то m простое По теореме Чебышева между m и 2m обязательно найдется простое число, если m>=2 . Обнулим k:=0 { Будет отвечать за число делителей числа} поэтому можно начать перебор for i:= (m+1) to 2*m do для каждого из i можно начать перебор for j:=1 to 2*m do if i mod j=0 then k:=k+1; Воот и делать проверку до тех пор пока k<>2 Как только k=2 сразу напечатать i, при котором это произошло Алгоритм в непричесанном виде я пробовал все это реализовать, что-то не вышло |
09.08.2019, 00:58 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
перебор с проверкой на простоту у Вас неправильно написан
возьмите код отсюда - https://www.programmersforum.ru/show...58&postcount=4 |
09.08.2019, 01:46 | #3 |
Пользователь
Регистрация: 08.08.2019
Сообщений: 20
|
Простота
Сейчас написал, прога определяет простоту, но мне нужно находить простое из промежутка:
Код:
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ Последний раз редактировалось Вадим Мошев; 09.08.2019 в 08:39. |
09.08.2019, 10:21 | #4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Твой фрагмент определения простоты надо сделать в виде функции, которая возвращает логическое значение, например True - если число простое.
Далее организуете цикл от вашего заданного простого m до 2 * m. В цикле каждое следующее число передаётся в функцию. Если функция вернула True, то печатаешь число и выходишь из цикла по Break. 1. При написании функции нужно вместо вывода сообщений вставить оператор return, предварительно присвоив функции логическое значение. Код:
Как-то так, ...
|
09.08.2019, 11:10 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
т.е. по моей ссылке Вы не ходили.
ну, дело ваше. ну так очевидно же: https://ideone.com/hUCbBZ Код:
|
09.08.2019, 12:08 | #6 |
Пользователь
Регистрация: 08.08.2019
Сообщений: 20
|
А как сделать без введения функции, я еще не изучал их?В моем расположении максимум: все виды циклов.
|
09.08.2019, 12:16 | #7 | ||
Пользователь
Регистрация: 08.08.2019
Сообщений: 20
|
Цитата:
Цитата:
|
||
09.08.2019, 12:35 | #8 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Ну так и организуй цикл в цикле.
Внешний цикл - перебираем тестируемые значения от m до 2 * m Внутренний цикл - проверяем на простоту. При проверке на простоту при обнаружении делимости сразу завершаем проверку (не подсчитываем делители: k > 0) и переходим к следующему тестируемому числу. Если вышли из цикла, в котором тестируем на простоту и k = 0, то тестировалось простое число. Код:
Как-то так, ...
|
09.08.2019, 12:50 | #9 | |
Пользователь
Регистрация: 08.08.2019
Сообщений: 20
|
Цитата:
|
|
09.08.2019, 14:15 | #10 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Ну да.
Но проанализируй пост #5 Serge_Bliznykov В предложенной там версии время перебора сокращается за счёт того, что после проверки на чётность проверяются только нечётные делители.
Как-то так, ...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вводится число и программа должна сказать ПРОСТОЕ оно или нет (Pascal) | diana1995 | Помощь студентам | 8 | 13.05.2013 10:45 |
Простое шифрование | alex.snap | Помощь студентам | 17 | 02.11.2012 06:19 |
k-е простое | daniil123 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 14.12.2011 23:52 |
Простое или нет | Superlotles | Общие вопросы C/C++ | 7 | 13.03.2010 20:30 |