Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7

Выполнение условий теоремы Поклингтона

04.02.2016, 14:57. Показов 1897. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как напитать программу? тема: теорема Поклингтона. что бы выполнялось условие теоремы?

Теорема Поклингтона
Пусть n = q^k * R + 1 где q - простое число, k \geqslant 1. Если существует такое целое число a , что a^{n-1} \equiv 1 \pmod n и НОД(a^{{(n-1)}/q} - 1, n) = 1, то каждый простой делитель p числа a имеет вид p = q^kr + 1 при некотором натуральном r

Критерий Поклингтона
Пусть n - натуральное число. Пусть число n -1 имеет простой делитель q, причем q > \sqrt {n} -1 . Если найдётся такое целое число a, что выполняются следующие два условия:

a^{n-1} \equiv 1 \pmod n
числа n и ~a^{(n-1)/q} -1 взаимнопросты,
то n - простое число.

Доказательство критерия Поклингтона
Предположим, что n является составным числом. Тогда существует простое число p - делитель n, причем p < \sqrt {n} . Заметим, что q > p -1 , следовательно q и p -1 - взаимнопросты. Следовательно, существует некоторое целое число u, такое, что uq \equiv 1 \pmod{p-1}. Но в таком случае ~a^{(n-1)/q}\equiv a^{uq(n-1)/q} = a^{u(n-1)}\equiv 1 \pmod p (в силу условия 1)). Но таким образом получено противоречие условию 2). Следовательно, n является простым числом.

Замечания к критерию Поклингтона
Теорема Поклингтона является отличным тестом на простоту при условии, что n-1 делится на простое число q > \sqrt {n} -1 , а также если q можно найти и доказать его простоту. Иначе, этим критерием пользоваться нельзя. Так же стоит отметить, что этот критерий является вероятностым только в том смысле, что случайно выбранное число a может либо удовлетворять условию НОД ~(a^{(n-1)/q} -1, n) = 1 , либо не удовлетворять ему. Однако, как только найдено такое a, критерий доказывает, что n - простое число. В отличие от вероятностных тестов (таких, например, как тест Миллера-Рабина, тест Соловея-Штрассена и др.) заключение теста Поклингтона - вполне определенное.



Пример
Докажем, что число n=31 является простым. Найдём простой делитель числа n-1, т.е. 30. Им является q=5, причём 5 > \sqrt {31} -1. Число a=2 удовлетворяет обоим критериям:

2^{30} \equiv 1 \pmod {31}
числа 31 и ~2^{(31-1)/5} -1 взаимнопросты,
Следовательно число 31 простое по критерию Поклингтона
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2016, 14:57
Ответы с готовыми решениями:

Выполнение трех условий
Короче суть такая с клавы вводяться 4 произвольных числа и даны 4 условия 3 из них прога выполняет а на 4 я застрял не могу понять как...

Какое из условий теоремы Ролля здесь не выполнено?
Построить дугу AB кривой y=lsinxl на отрезке . Почему на дуге нет касательной, параллельной хорде АВ? Какое из условий теоремы Ролля здесь...

Выполнение условий
Добрый день. Пытаюсь выполнить данное условие в mathlab, но что-то идет не так. Последнее значение не меняется. A=12; i=1:A; l(i)=i;...

18
Объявлятель переменных
 Аватар для SpBerkut
1225 / 411 / 321
Регистрация: 24.09.2011
Сообщений: 1,279
04.02.2016, 16:49
Я так понимаю, формулы надо расшифровать.
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
05.02.2016, 00:08

Не по теме:

Ewgen, формулы копируйте из поля ниже редактора формул после предварительного просмотра формулы. Формулу, для избежания появления артефактов, лучше располагать в отдельном абзаце в три строки:

[LATEX]
<здесь сама формула>
[/LATEX]

А, нет. Всё ясно. Зря я Вам про редактор формул написал. Это у Вас перепечатка статьи из Википедии: Критерий Поклингтона.

И... Собственно, в чём состоит Ваш вопрос? Найти определённые числа по критерию Поклингтона? Ну-ну. А если вдруг не найдём, тогда что? И вот ещё вопрос: нужно ли доказывать, что таких чисел не существует? Написано же:
Цитата Сообщение от Ewgen Посмотреть сообщение
<Условия использования> ... Иначе, этим критерием пользоваться нельзя
Опишите задачу подробнее.
0
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7
06.02.2016, 18:53  [ТС]
нужно написать программу что бы при вводе с компьютера любого числа, она дала ответ простое это число или нет, опираясь на вот эту теорему. при помощи теоремы можно определять простоту числа. я сама математик и в программировании не очень силен, а программа очень нужна. если кто сможет написать, то это бы мне очень помогло.
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
06.02.2016, 20:01
Цитата Сообщение от Ewgen Посмотреть сообщение
при вводе с компьютера любого числа
Максимальное целое число, представимое с помощью стандартных типов паскаля точно (да и других языков тоже), это 264-1 (тип uint64). До этого числа (число Мерссена, какое оно там, 63 или 64 по порядку) все простые числа и без того прекрасно известны. Получается, критерий этот при вычислениях с помощью стандартных типов данных вроде бы как-то и не требуется. Хотя... Может быть, вычислений при тесте простоты поменьше будет при достаточно большом числе для тестирования.

Тогда вопрос. Насколько большое число Вы желаете видеть в качестве максимального для конкретной реализации теста?

Если больше, чем указанное - конечно, можно применить biginteger из Pascal ABC.NET или длинную арифметику, но с этого места нужно уже разговаривать поподробнее.

Итак?
1
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7
07.02.2016, 09:21  [ТС]
на сколько оно может быть максимальным, такое и хочу видеть. и еще что бы открывалась а АВС паскале.
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
07.02.2016, 11:08
Цитата Сообщение от Ewgen Посмотреть сообщение
что бы открывалась а АВС паскале
Боюсь, что от этого... Нет, матом нельзя... Недоделанного учебного диалекта паскаля Вам придётся отказаться. Максимально ёмкий тип данных в этом диалекте - integer - охватывает диапазон чисел -231..231-1. Это учебный диалект паскаля, в котором ампутировано всё, что можно и нельзя.
Цитата Сообщение от Ewgen Посмотреть сообщение
на сколько оно может быть максимальным, такое и хочу видеть
Ещё раз: какое именно? В принципе, если применить длинную арифметику, то величина числа ограничивается разве что свободным местом на диске. Но время работы программы в этом случае будет, мягко говоря, очень низкое. Из-за низкой скорости доступа к данным на диске по сравнению со скоростью доступа к данным в памяти. Для достаточно большого (одного!) числа на самом обычном компьютере это будет несколько суток или, может быть, месяцев.

Поскольку требуется упихать в программу не только само n, но и a(n-1)/q-1, всё равно придётся использовать длинную арифметику. И, чтобы проверка критерия происходила за приемлемое время, все числа, используемые при проверке критерия, должны находиться в памяти. Само n можно считать из файла в память, не вопрос.

Предлагаю использовать Free Pascal (может быть, плюс Lazarus), и решить всё с помощью длинной арифметики. Или - давайте перенесём тему в Pascal ABC.NET, и попытаемся решить задачу с помощью типа BigInteger. В этом случае я устраняюсь: ABC.NET я знаю плохо.

В любом случае, требуется конкретизация, а не это:
Цитата Сообщение от Ewgen Посмотреть сообщение
на сколько оно может быть максимальным
Может-то он может, но вряд ли у Вас есть собственный числогрыз с быстродействием хотя бы 10 GFlop/s. Давайте так. Пусть будет максимально возможное число, такое, чтобы все числа для проверки критерия поместились в памяти, с одной стороны, и чтобы для проверки критерия требовалось менее часа на одно число.
0
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7
07.02.2016, 13:24  [ТС]
ну тогда как получится. если мах 2^64 то пусть это и будет мах
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
07.02.2016, 13:42
Буду пробовать.
Цитата Сообщение от Ewgen Посмотреть сообщение
если мах 2^64
Нет, придётся забавляться с длинной арифметикой, потому что a(n-1)/q-1, и если число близко к a64, а q=2, то всё равно будет примерно 2(263). Не так прост этот критерий, как кажется.
0
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7
14.02.2016, 12:32  [ТС]
ну что там ничего не выходит?
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
14.02.2016, 21:42
Пока не очень. Со временем туго, в разъездах был последнее время.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
14.02.2016, 21:54
У FPC вроде бы есть штатный модуль для длинной арифметики - http://wiki.freepascal.org/gmp (и ещё ссылка http://www.freshports.org/math/fpc-gmp).

Добавлено через 3 минуты
При условии наличия на компе динамической библиотеки gmp.dll.
1
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
14.02.2016, 21:56
Хм... Не знал. Завтра гляну, что за зверь.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
14.02.2016, 22:08
Этот модуль на форуме время от времени использует volvo. Есть даже примеры Найти все элементы начального отрезка из n членов последовательности Фибоначчи, являющиеся квадратами, Циклический алгоритм вычисления произведения всех чисел от 25 до 40.
1
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
14.02.2016, 22:15
Не обращал внимания... volvo обычно оперирует для этих целей ABC.NET'ом, а там biginteger. Ладно, всё равно до завтра отложу... Сейчас башка что-то не очень соображает.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
14.02.2016, 22:45
Попробовал пример от volvo, действительно требуется gmp.dll. После скачивания и переименования dll, пример отработал. Если ТС нельзя использовать внешние библиотеки, то можно хотя бы временно использовать готовую длинную арифметику для реализации алгоритма, а потом уже и самопальную реализовать.
0
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7
27.02.2016, 07:24  [ТС]
ну что ни как? время уже поджимает((((((((((((((((((((((((((((
0
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 7
27.02.2016, 07:28  [ТС]
вот исходники из книги
Миниатюры
Выполнение условий теоремы Поклингтона   Выполнение условий теоремы Поклингтона   Выполнение условий теоремы Поклингтона  

Выполнение условий теоремы Поклингтона  
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
29.02.2016, 04:45
Задача довольно большая, никак не могу выкроить время на её решение... Боюсь, всё же не успею.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.02.2016, 04:45
Помогаю со студенческими работами здесь

Выполнение двух условий
Здравствуйте! Подскажите, как на С#реализовать проверку на 2 условия одновременно т.е, например, х&gt;5 и x&lt;10?

Выполнение условий в программе
Написать программу, вычисляющую по заданной величине X, являющейся величиной дохода в долларах, величину уплаты налога Y. Налог...

Выполнение нескольких условий
Подскажите плиз с данным условием. Есть 3 comboBox (медико-возростная группа, подгруппа и упражнение) и 2 textBox (Баллы и Оценка). Условие...

Выполнение условий от элемента ComboBox
Здравствуйте. У меня есть элемент Combo Box. В зависимости от выбранного пункта необходимо выполнять действие, но когда я начинаю...

Выполнение сразу двух условий
Задача такая: летит частица, попадает сначала в крышку, потом в в сцинтиллятор. Меня интересует выделенная энергия частиц в сцинтилляторе в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru