Как стать автором
Обновить

Применение формулы бинома для определения простых чисел

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.6K
Всего голосов 8: ↑5 и ↓3+3
Комментарии24

Комментарии 24

В первой формуле у вас верхний предел суммирования неправильно записан.

често сказать, не вижу ошибки

КОНТРПРИМЕР p=29,n=3,x=10

спасибо, уже поправила, x тут не число а переменная, мы ее ни к чему не приравневаем, нас интересуют только коэфициенты при x^k

Там должно быть p а не n.

Теорему Вильсона чем-то напоминает

А чему равно x в Вашем методе?

Там еще квантор всеобщности по x не дописан, да

нет, x - просто переменная, она ни к чему не приравневается

ничему, это переменная, нас интересуют только коэфициенты при ней

А, понял. По ходу, если число p - простое, то оно должно делить все биномиальные коэффициенты, кроме, естественно, единичных. А вот верно или нет обратное - не знаю:)

А вот верно или нет обратное — не знаю:)

Верно. Alexandroppolus чуть ниже привел доказательство. Но наверняка

Хотя код/метод и справляется с достаточно большим количеством чисел, я не стану утверждать, что он работает на 100% случаев.

Да вроде это тривиально доказывается. А именно, что если m не простое, то найдется такое 0 < n < m, что C(m, n) не делится на m. Пусть в m есть простой делитель p в степени k. Тогда берем n = p, и получаем C(m, n) = m! / (p! * (m - p)!) = m * (m-1) * (m-2) * ... *(m-p+1) / p!. В этой дроби числитель равен (p^k * a), знаменатель равен (p * b), где a и b не делятся на p, итог будет (p^(k-1) * с), т.е. не делится на m

Ну а для простого m всё очевидно

Похоже на очень наивную реализацию метода AKS. Основано на той же теореме, только вместо проверки в поле по модулю X^r-1 тут брутфорсом проверяются все коэффициенты (ну ладно, половина — все равно плохо).


В итоге, получилось вообще бесполезное упражнение. Этот метод проверяет число N за O(N) операций с BigInt. Очень сложных операций. Наивная же проверка на делимость с одной единственной оптимизацией (проверять делители до корня) работает на порядки быстрее — за O(sqrt(N)).


Более того, поскольку тут считаются сами коэффициенты бинома, то в процессе вычисления получаются числа длины O(N). Т.е. на самом деле тут сложность даже не линейная от числа, а квадратичная! Более медленный и бесполезный метод проверки числа на простоту придумать довольно сложно.

Возможно, в квантовых компьютерах многие наивные методы обретут актуальность.

Ну вот проверка на простоту — один из немногих методов, которые уже для кавантовых компьютеров разработаны. Так что я бы не надеялся на квантовые вычисления в качестве призрачной надежды на актуальность у описанного в статье метода.

Интересно, откуда автор взял метод. Возможно, это студенческая работа, а метод предложил научный руководитель :)

неверная догатка)

что касается последних двух обзацев, они не уместны, поскольку ничего о практической применимости не говорилось, и не заявлялось что он "быстрый", это просто еще один метод ни на что не претендующий. мне метод нравится сугубо эстетически.

и не заявлялось что он "быстрый"

Простите, но вы прямо в лиде заявляете, что он «эффективный и надёжный», а он ни то, ни другое.

поскольку ничего о практической применимости не говорилось

Ну тогда у метода должна быть хоть какая-то фишка. Иначе, ну зачем он? Красивое теоретическое обоснование? Возможность расширить метод и гораздо лучше его реализовать? Простота реализации? Ничего этого в статье нет. Можно было бы привести доказательство критерия простоты. Можно было бы порассуждать о более эффективной релизации в поле по модулю небольшого полинома.

Такие алгоритмы являются предметом любопытства, а не практического применения. А что такое любопытство? Оно вообще нужно?

Вы движетесь в правильном направлении. Попробуйте делать все это на питоне. Кстати для питона есть хорошая либа gmpy2.

Завидую тому, что у вас есть время на такие занятия.

На мой вкус, вместо

(x - 1)^p - (x^p - 1)

лучше будет записать

(x + 1)^p - x^p - 1

Убирается головная боль, связанная с тем, чтоб следить за минусом при a_k, который, судя по тексту статьи, нам всë равно не нужен, а все последующие формулы становятся проще для восприятия

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории