Iremos trabalhar utilizando um conjunto Zn={0, 1, 2, ..., n}, mais especificamente com o:
Z27={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26},
pois este conjunto contém 27 elementos, a mesma quantidade de símbolos do nosso alfabeto "A".
A soma, subtração e a multiplicação em Z27 são diferentes do que conhecemos usualmente. Vamos a uma explicação grosseira. Se a soma ou multiplicação der superior a 26, então vá diminuindo 27 até que o número esteja entre 0 e 26. Se a subtração der menor do que 0, então some 27 até que o número esteja entre 0 e 26. Caso a soma, subtração ou multiplicação fique entre 0 e 26, então não há o que fazer, é igual ao que conhecemos usualmente.
Exemplo 1: 7 + 24 = 31 que é maior que 26, então 31 em Z27 é equivalente a 31 - 27 = 4, ou seja, em Z27, 7 + 24 = 4. Estranho mas é isso mesmo.
Exemplo 2: 3 * 25 = 75 que é maior que 26, então 75 - 27 = 48, que ainda é maior que 26. Então, 48 - 27 = 21. Logo, em Z27, 3 * 25 = 21.
Exemplo 3: 7 - 23 = -16 que é menor que 26, então -16 + 27 = 11. Logo, em Z27, 7 - 23 = 11.
Exemplo 4: 7 + 10 = 17 que está entre 0 e 26, então 7 + 10 = 17 em Z27.
Pronto, agora vamos implementar o que foi dito acima em PHP:
// (início) Z_n
function Z_n($x) {
$n = 27; // configura o n. Se $n = 27, então estamos trabalhando com o Z_27.
if ($x >= $n) { // verifica se o valor é maior que 26, se sim, então subtrai 27 até que o valor fique entre 0 e 26. em seguida, exibe o valor em Z_27.
while ($x >= $n) {
$x = $x - $n;
}
return $x;
}
elseif ($x < 0) { // caso o número não seja maior que 26, então verifica se o valor é menor que 0, se sim, soma 27 até que o valor fique entre 0 e 26. em seguida, exibe o valor em Z_27.
while ($x < 0) {
$x = $x + $n;
return $x;
}
}
else { // se o valor não for nem maior que 26 nem menor que 0, ou seja, estiver entre 0 e 26, então não há problema e o valor é exibido.
return $x;
}
}
// (fim) Z_n
Teste os exemplos 1, 2, 3 e 4 colocando o código abaixo no mesmo arquivo em que você colocou a função Z_n acima:
Exemplo 1: <? echo "7 + 24 = ".Z_n(7+ 24)."."; ?>
Exemplo 2: <? echo "3 * 25 = ".Z_n(3*25)."."; ?>
Exemplo 3: <? echo "7 - 23= ".Z_n(7-23)."."; ?>
Exemplo 4: <? echo "7 + 10= ".Z_n(7-23)."."; ?>
Dica 1: Crie novos exemplos.