Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943

Поиск больших простых чисел с использованием малой теоремы Ферма

14.05.2018, 21:10. Показов 7687. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Мне нужно найти очень большое простое число и я решил воспользоваться малой теоремой Ферма для его нахождения а точнее использовать формулу am - 1 = 1 (mod n), а чтобы быстро возвести число a в степень воспользовался алгоритмом быстрого возведения в степень. Всё это почему то не хочет нормально работать, оперативка забивается. Алгоритм вроде правильно реализовал
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def binary_pow(a, m):
    n = 1
    while(m):
        if(m % 2):
            n *= a
        a *= a
        m //= 2
    return n
 
def prime_number():
    n = int('1' + '0' * 309 + '1') # это число с которого я и начинаю искать простое число, число состоящее из 309 цифр
    while(True):
        if(binary_pow(2, n - 1) % n == 1):
            return n
        n += 2
 
p = prime_number()
print(p)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2018, 21:10
Ответы с готовыми решениями:

Найти обратный элемент с использованием малой теоремы Ферма
Доброго времени суток форумчане, помогите найти обратный элемент a-1 при a=8, m=19 с использованием малой теоремы Ферма (желательно...

Проверка числа на простоту с помощью малой теоремы Ферма
Доброго времени суток! Проверить заданное на простоту с помощью малой теоремы Ферма. Число задается с клавиатуры.

Поиск больших простых чисел
День добрый Столкнулся с необходимостью решить задачу Проверку на простоту реализовываю через решето Эратосфена, уперся в главное...

2
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
15.05.2018, 06:47
no swear, надо сразу по модулю в степень возводить, чтобы небольшие числа получались в расчете, иначе вы 2 возводите в очень большое число и получаете вообще огромное число, которое никуда не поместится
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def pow(b, n, m):
    r = 1
    while n:
        if n & 1:
            r = r * b % m
        b = b * b % m
        n >>= 1        
    return r
 
def prime_number():
    n = int('1' + '0' * 309 + '1') # это число с которого я и начинаю искать простое число, число состоящее из 309 цифр    
    while True:
        if pow(2, n - 1, n)  == 1:
            return n
        n += 2
 
p = prime_number()
print(p)

Не по теме:


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

1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
15.05.2018, 15:02  [ТС]
Цитата Сообщение от woldemas Посмотреть сообщение
Хотя я не понял смысла такого теста на простоту, он же не является достаточным условием и число может оказаться составным
В книге которую я читаю "Алгоритмы - вводный курс, Томас Кормен" также упоминается тест Миллера - Рабина для проверки числа на простоту, но он также говорит что исключения среди больших чисел при использовании малой теоремы Ферма очень малы так что достаточно будет проверять все нечётные m, на условие 2m - 1 mod m == 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2018, 15:02
Помогаю со студенческими работами здесь

Требуется подсчитать число пар простых чисел-близнецов ,не больших заданного числа N. С использованием функций
Среди простых чисел встречаются числа-близнецы(числа,разность между которыми равна 2,например,3 и 5,17 и 19....)Требуется подсчитать число...

Доказательство гипотезы (теоремы) Эндрю Била в контексте "Полного доказательства великой теоремы Ферма методом деления"
УДК 512.1 Доказательство гипотезы Эндрю Била Ведерников Сергей Иванович – пенсионер, г. Москва Аннотация. Методы...

Поиск простых чисел среди чисел Фибоначчи с использованием событий
Доброе время суток! Подскажите пожалуйста, вот есть рабочий код, но разобраться, что-то совсем не могу. Можете пояснить, что к чему?...

Факторизация больших целых чисел по теореме Ферма
Доброго времени суток , помогите пожалуйста разобраться с факторизацией чисел. Можно какую-то блок схему или пример реализации(желательно...

Теоремы сравнения простых и псевдопростых чисел
Здравствуйте! Недавно обнаружил интересные свойства: 1) Если p - простое число и q - целое число, не делящееся на p, то (p –...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru