Есть ли способ написать «мод 31» без операторов модуля / деления?
Получение модуля числа может быть легко сделано без оператора модуля или делений, если ваш операнд имеет степень 2. В этом случае выполняется следующая формула:x % y = (x & (y − 1))
, Это часто много перформанс во многих архитектурах. Можно ли сделать то же самое дляmod 31
?
int mod31(int a){ return a % 31; };