sábado, 10 de novembro de 2012

Gerando um número reverso e MDC

Dois números naturais (1,2,3,4,...) tem sempre um divisor comum, isto é, um número que divide ambos os números e resta zero (mesmo que este número seja 1). O maior divisor comum destes dois números é chamado de máximo divisor comum destes números, e é abreviado por MDC.

Para representar uma fração normalmente fazemos com que o numerador e denominador sejam números primos, isto é, o MDC entre eles é 1. Assim se consideramos 2 números quaisquer a e b, uma fração a/b pode ser simplificada para c/d onde c e d são primos realizando a seguinte operação. Achamos os MDC(a,b) = m e achamos a = m * c e b = m * d.

Podemos achar o MDC por fatoração dos 2 números ou pelo método das divisões sucessivas. Eu acho melhor implementar o segundo método, portanto:

Vamos agora fazer uma classe bem simples - só para a gente treinar um pouco mais esta parte de manipulação matemática de inteiros. O que vamos fazer? Uma classe que passamos um número inteiro abcdef e a classe retorna outro número na ordem invertida. Temos diversos métodos de resolver este problema, os mais comuns são:
  •  transformar o inteiro em uma String e ler as posições da string na ordem inversa, gerando uma segunda String. Ao terminar convertemos esta segunda String em inteiro;
  • usamos restos sucessivos;
  • etc
Acho que este segundo método tenha uma performance pior, porém ele permite a gente ver mais matemática.


Notem a linha 28, vocês se lembram do último post? Dá para reescrever como
numero /= 10

Nenhum comentário:

Postar um comentário