Есть хорошее полиномиальное выражение по модулю 7 для третьей стороны, заданное двумя сторонами a и b .
3 ( а3б - б3)модификация7
или факторинг
3 а б ( а2- б2)модификация7
Модуль 7 отображается на остаток в {0,1,2,3,4,5,6}.
Я объясняю, почему это работает в этом ответе Math SE , хотя я думаю, что, вероятно, есть более чистый аргумент, который я пропускаю Единственный другой двухчленный полином, который работает
( 3 а5б5- а3б )модификация7
который я первоначально нашел, преобразовав мою битовую обработку в арифметические операции, затем выполнил поиск методом грубой силы по полиномам этой формы, чтобы найти более хороший.
Пожалуйста, не стесняйтесь добавлять порты этого на ваш любимый язык; это пост CW.
J, 9 от Synthetica
7|3***+*-
Смотри мой пост
Dyalog APL, 9 от ngn (опечатка исправлена Adám)
7|3×××+×-
Откровенно украденный сверху J ответ.
TI-Basic, 14 от Timtech
7fPart((A³B-AB³)/21
Pyth, 16 от FryAmTheEggman
M%*3-*H^G3*^H3G7
Определяет функцию g
двух значений.
Golfscript, 18 от Питера Тейлора (старый полином)
~1$*.5?3*@.*@*- 7%
CJam, 18 Мартина Бюттнера (перенесено из Golf's Peter's Peter) (старый полином)
l~1$*_5#3*@_*@*m7%
Mathematica, 20 Мартина Бюттнера
Mod[+##(#-#2)3##,7]&
Да, это унарный плюс, и нет, нет более короткого пути, который не использует унарный плюс.
dc, 21 by Toby Speight
sb7+d3^lb*rlb3^*-3*7%
Я должен добавить 7, a
чтобы разница всегда была положительной (у dc есть подписанный %
оператор).
Юлия, 24 23 Мартин Бюттнер
f(a,b)=3a*b*(a^2-b^2)%7
CoffeeScript, 28 26 от rink.attendant.6
x=(a,b)->3*a*b*(a*a-b*b)%7
JavaScript (ES6), 28 26 от rink.attendant.6
x=(a,b)=>3*a*b*(a*a-b*b)%7
По сути, такой же, как CoffeeScript.
Python 28 от xnor
lambda a,b:3*a*b*(a*a-b*b)%7
Баш, 31
Ничего особенного:
echo $[3*($1**3*$2-$1*$2**3)%7]
или альтернативно:
echo $[3*$1*$2*($1*$1-$2*$2)%7]
Другой (более длинный, но, возможно, интересный) подход .
Ним, 36 от Sillesta
proc(x,y:int):int=3*x*y*(x*x-y*y)%%7
Java 7, 46 44 от rink.attendant.6
int f(int a,int b){return(a*a-b*b)*a*b*3%7;}
Ява 8, 25 23 Кевин Круйссен
a->b->(a*a-b*b)*a*b*3%7
PHP, 49 47 от rink.attendant.6
function x($a,$b){echo($a*$a-$b*$b)*3*$a*$b%7;}
Партия, 52 unclemeat
set/aa=(3*(%1*%1*%1*%2-%1*%2*%2*%2)%%7+7)%%7
echo %a%
CMD изначально не поддерживает истинный модуль (поэтому не может обрабатывать отрицательные числа) - следовательно %%7+7)%%7
.
МЕНЬШЕ (как параметрический миксин ), 62 60 by rink.attendant.6
.x(@a,@b){@r:mod(3*@a*@b*(@a*@a-@b*@b),7);content:~"'@{r}'"}
Смотрите мой пост ниже .
05AB1E, 10 8 от Emigna (-2 байта от Kevin Cruijssen)
nÆs`3P7%
Попробуйте онлайн.
Haskell, 31 27 25 по общему отображаемому имени
a#b=3*a*b*(a*a-b*b)`mod`7
Попробуйте онлайн!
Excel, 27 Верниш
=MOD(3*(A1^3*B1-A1*B1^3),7)
Excel VBA, 25 Тейлор Скотт
?3*[A1^3*B1-A1*B1^3]Mod 7
Далее (gforth) 41 от reffu
: f 2>r 2r@ * 2r@ + 2r> - 3 * * * 7 mod ;
Попробуйте онлайн!
C #, 23 Кевина Круйссена
a=>b=>(a*a-b*b)*a*b*3%7