Здравствуйте уважаемые участники форума
Недавно написал программу , основанную на псевдокоде в википедии
http://ru.wikipedia.org/wiki/Тест_Миллера_—_Рабина
Столкнулся с некоторыми сложностями. После 45000 программа начинает многие Простые числа считать составными.
Сначала я думал, что не правильно написал код программы, но потом решил взять в руки ручку выполнить все операции вручную на бумаге, для одного из простых чисел , которые программа считает составным. Самая большая странность заключается в том, что исходя из псевдокода, написанного в википедии , это простое число должно быть составным.
Вот что у меня получилось .
Число 47057 m-1 равно 47056 s равно 4 t равно 2941
Так если взять случайное число А равное 3 то программа завалит тест на простоту
3 в степени 2941 мод 47057 равно 46552
Возводя последнее число в квадрат и взяв остаток от деления даже НАМНОГО больше чем 3 раза(s-1) , я никак не получал число 47056.
Либо я неправильно понял псевдокод, либо он неправильно написан. Может кто-то сталкивался с подобной проблемой. Дело в том, что если взять число больше 100000 то очень большое колличество простых у меня отсеивается.
Заранее благодарен за ответ.