
Solução em Python do Problema 12
def main():
'''
Programa que lê um dois inteiro positivos n e m e imprime o
máximo divisor comum (mdc) de n e m.
Exemplos de execução
Digite o valor de n (n > 0): 15
Digite o valor de m (m > 0): 24
MDC(15,24)=3
Digite o valor de n (n > 0): 315
Digite o valor de m (m > 0): 125
MDC(315,125)=5
Digite o valor de n (n > 0): 7
Digite o valor de m (m > 0): 5
MDC(7,5)=1
'''
print("Determina o mdc de dois números n > 0 e m > 0\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# leia o valor de m
m = int(input("Digite o valor de m (m > 0): "))
# em cada iteração mdc é o candidato a mdc(n,m)
mdc = n
while n % mdc != 0 or m % mdc != 0:
mdc = mdc - 1
print("MDC(%d,%d)=%d" %(n,m,mdc))
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
#------------------------------------------------------------------
# Solução 2: Program simples para calcular o mdc de dois números
# NÃO usa o algoritmo de Euclides.
#
#------------------------------------------------------------------
def main():
'''
Programa que lê um dois inteiro positivos n e m e imprime o
máximo divisor comum (mdc) de n e m.
Exemplos de execução
Digite o valor de n (n > 0): 15
Digite o valor de m (m > 0): 24
MDC(15,24)=3
Digite o valor de n (n > 0): 315
Digite o valor de m (m > 0): 125
MDC(315,125)=5
Digite o valor de n (n > 0): 7
Digite o valor de m (m > 0): 5
MDC(7,5)=1
'''
print("Determina o mdc de dois números n > 0 e m > 0\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# leia o valor de m
m = int(input("Digite o valor de m (m > 0): "))
# em cada iteração mdc é um divisor comum de m e n
mdc = 1
# procure por um divisor maior que mdc
divisor = 2 # divisor é um candidato a divisor comum
while divisor <= n:
if n % divisor == 0 and m % divisor == 0:
mdc = divisor
divisor += 1
print("MDC(%d,%d)=%d" %(n,m,mdc))
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
#------------------------------------------------------------------
# Solução 3: Calcula o mdc de dois números através do algoritmo de
# Euclides.
#
#------------------------------------------------------------------
def main():
'''
Programa que lê um dois inteiro positivos n e m e imprime o
máximo divisor comum (mdc) de n e m.
Exemplos de execução
Digite o valor de n (n > 0): 15
Digite o valor de m (m > 0): 24
MDC(15,24)=3
Digite o valor de n (n > 0): 315
Digite o valor de m (m > 0): 125
MDC(315,125)=5
Digite o valor de n (n > 0): 7
Digite o valor de m (m > 0): 5
MDC(7,5)=1
'''
print("Determina o mdc de dois números n > 0 e m > 0\n")
# leia o valor de n
n = int(input("Digite o valor de n (n > 0): "))
# leia o valor de m
m = int(input("Digite o valor de m (m > 0): "))
# aqui começa o algoritmo de Euclides
anterior = n
atual = m
resto = anterior % atual
while resto != 0:
anterior = atual
atual = resto
resto = anterior % atual
print("MDC(%d,%d)=%d" %(n,m,atual))
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
main()
História
da Computação | Listas de
Exercícios | Problemas Resolvidos | macmulti@ime.usp.br