ПАРИ включает (среди прочего) реализацию алгоритма Шуфа (точнее, алгоритма Шуфа-Элкиса-Аткина).
? р = 115792089237316195423570985008687907853269984665640564039457584007908834671663
%1 = 115792089237316195423570985008687907853269984665640564039457584007908834671663
? карточка (эллинит ([0,7], p))
%2 = 115792089237316195423570985008687907852837564279074904382605163141518161494337
Это с открытым исходным кодом, так что вы можете легко заглянуть внутрь.
Если вы не хотите устанавливать PARI, CoCalc позволяет запускать PARI (или Sage) в браузере. Просто запустите новый проект и внутри этого нового терминала Linux введите «gp», и вы готовы к работе в PARI.
В качестве альтернативы вы можете выполнить расчет непосредственно в Мудрец (которую вы также можете запустить с помощью CoCalc: New – Sage worksheet), но это не дает вам никакой новой реализации, поскольку Sage просто вызывает PARI для этой функции:
мудрец: p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
мудрец: EllipticCurve(GF(p), [0,7]).order()
115792089237316195423570985008687907852837564279074904382605163141518161494337
Для документации в PARI:
? ?эллкарта
ellcard(E,{p}): дана эллиптическая кривая E, определенная над конечным полем Fq,
вернуть порядок группы E(Fq); для других полей определения K p должен
определяют конечное поле вычетов (p простое число для K = Qp или Q; p максимальный идеал для
K числовое поле), вернуть порядок (несингулярного) сокращения E.
Для документации в Sage:
мудрец: E = EllipticCurve(GF(p), [0,7])
мудрец: Э. порядок?
мудрец: E.порядок??