Сложение и вычитание двоичных чисел находятся в A C0 .
Для любого числа постоянной ,
является сводится к делению на ( ):
х мод с С 0 с ⌊ х / с ⌋ х мод с = х - ( с раз ⏞ ⌊ х / с ⌋ + ⋯ + ⌊ х / с ⌋ )сх мод сA C0с⌊ х / с ⌋
xmodc=x−(⌊x/c⌋+⋯+⌊x/c⌋c times)
Известно, что трудно для для любого
который не является степенью . Таким образом, трудно для для любого
который не является степенью .A C 0 c 2 ⌊ x / c ⌋ A C 0 c 2xmodcAC0c2⌊x/c⌋AC0c2
Как отметил Эмиль в комментариях, существует простое сокращение нечетного простого числа
с (то есть с ) до
с двоичный вход: мы используем только входные биты, кратные и используем FLT ( ). M O D c ∑ i x i mod c x i ∈ { 0 , 1 } x mod c p - 1 2 ( p - 1 ) i mod p = 1cMODc∑iximodcxi∈{0,1}xmodcp−12(p−1)imodp=1