Essa pergunta vai mais especificamente para o prof. Nicolau Saldanha,
pois tem a ver mais com umas notas dele, mas quem souber responder, por
favor, sinta-se à vontade :)
Prof. Nicolau Saldanha,
Recentemente eu entrei numa discussão com colegas de universidade pq a gente tava construindo um aplicativo
que em dado ponto era necessário redefinir a operação de divisão com
resto. Eu defendi que era conveniente construir de modo que
o resto seja sempre >=0 pra evitar ambiguidades. Mas outro cara disse que não havia problema algum pois o operador
% das linguagens de programação retorna números negativos dependendo do caso.
Isso é verdade, embora eu nunca tenha percebido, pelo menos em Java e Python (as linguagens disponíveis nesse computador
no momento). Assim por exemplo a operação -5%-2 retorna -1, e portanto
o quociente é dois. Porém nas suas notas sobre primos de mersenne na
página 9 vc diz, mais ou menos (e foi o que eu aprendi em teoria dos
números):
Dados a, b inteiros, b !=0, então existe (e são únicos) q, r inteiros, r>=0 tal que a=qb+r. Além disso se b<0,
q= função teto (a/b). Isso significa que -5 dividido por -2 retorna q=3 e r=1, satisfazendo as condições.
Agora a pergunta: Pq essa ambiguidade? Há uma razão especial para as linguagens de programação (pelo menos essas) usarem
uma definição diferente da tradicional (de que o resto deve ser positivo para garantir a unicidade)?
Obrigado,
--
Denisson