Genius má implementovánu modulární aritmetiku. Když ji chcete použít, stačí přidat „mod <celé_číslo>“ za výraz. Například: 2^(5!) * 3^(6!) mod 5
Pro modulární aritmetiku by bylo možné použít i počítání s celými čísly a následně určením zbytku na konci pomocí operátoru %
, ale to je časově náročné, ne-li nemožné, při práci s většími čísly. Například 10^(10^10) % 6
jednoduše nebude pracovat (exponent bude příliš velký), zatímco 10^(10^10) mod 6
je spočteno v mžiku. V prvním příkladu se zkusí vypočítat 10^(10^10)
a pak najít zbytek po dělení 6, zatímco v druhém příkladu se vyhodnotí vše modulo 6 už na začátku.
The inverses of numbers mod some integer are computed by writing them as rational numbers (as long as the desired inverse exists, of course). Examples:
10^-1 mod 101
1/10 mod 101
Modular evaluation also works with matrices including taking inverses, powers, and dividing. Example:
A = [1,2;3,4]
B = A^-1 mod 5
A*B mod 5
This should yield the identity matrix as B will be the inverse of A mod 5.
Some functions such as
sqrt
or
log
work in a different way when in modulo mode. These will then work like their
discrete versions working within the ring of integers you selected. For
example:
genius> sqrt(4) mod 7
=
[2, 5]
genius> 2*2 mod 7
= 4
sqrt
will actually return all the possible square
roots.
Nezřetězujte operátory mod, umístěte jen jeden na konce výpočtu a všechny početní operace ve výrazu nalevo budou ošetřeny v modulární aritmetice. Když umístíte mod do mod, obdržíte neočekávané výsledky. Pokud chcete použít modulo na jediné číslo a jen zjistit, zda zůstane zbytek, je lepší použít operátor %
. Když potřebujete zřetězit několik výrazů v modulární aritmetice s různými děliteli, může být lepší rozdělit výraz na více výrazů a použít dočasné proměnné, aby se předešlo vložení mod do mod.