O maior divisor comum (GCD) de aeb é o maior número que divide os dois sem resto.
Uma maneira de encontrar o GCD de dois números é o algoritmo de Euclides, que se baseia na observação de que se r
é o resto quando a
é dividido por b
, então gcd(a, b) = gcd(b, r)
. Como caso básico, podemos usar gcd(a, 0) = a
.
Escreva uma função chamada gcd que receba parâmetros a
e b
e retorna seu maior divisor comum.
Respostas:
Está na biblioteca padrão .
Código-fonte do
inspect
módulo em Python 2.7:A partir do Python 3.5,
gcd
está nomath
módulo ; aquele emfractions
está obsoleto. Além disso,inspect.getsource
não retorna mais o código-fonte explicativo para nenhum dos métodos.fonte
fractions.gcd(1, -1)
é ,-1
mas1 > -1
isto é,1
divide ambos1
e-1
sem resto e é maior do que-1
, consulte bugs.python.org/issue22477gcd(1, -1) == -1
parece totalmente legítimo para mim.fractions.gcd()
jeito que está (funciona em elementos de anel euclidiano).math.gcd(1, -1)
retorna1
.Os algoritmos com mn podem ser muito longos.
Este tem um desempenho muito melhor:
fonte
x
antes de ser atribuída. Você atribuiuy
ax
primeira , então agoray
vai ser definido para0
(comoy % y
é sempre 0).Esta versão de código utiliza o Algoritmo de Euclides para encontrar GCD.
fonte
def gcd(a, b): if b == 0: return a return gcd(b, a % b)
fonte
fonte
Solução muito concisa usando recursão:
fonte
usando recursão ,
usando enquanto ,
usando lambda,
fonte
Uma abordagem diferente baseada no algoritmo de euclid.
fonte
fonte
em python com recursão:
fonte
fonte
Acho que outra maneira é usar a recursão. Aqui está o meu código:
fonte
gcd(10,5)
...Para
a>b
:Para um
a>b
oua<b
:fonte
b, a = a, b
. tente ler mais sobre o idiomaEu tive que fazer algo assim para uma tarefa de casa usando loops while. Não é a maneira mais eficiente, mas se você não quiser usar uma função, isso funciona:
fonte
fonte
Este código calcula o mdc de mais de dois números dependendo da escolha dada pelo # usuário, aqui o usuário fornece o número
fonte
A troca de valor não funcionou bem para mim. Então, acabei de configurar uma situação semelhante a um espelho para os números que são inseridos em a <b OU a> b:
fonte
Esta é a solução que implementa o conceito de
Iteration
:fonte
maior_common_devisor (A)
fonte
fonte
break
declaração está tentando alcançar.