Tenho vergonha de fazer uma pergunta tão simples. Meu mandato não começa por mais duas semanas, então não posso perguntar a um professor, e o suspense me mataria.
Por que 2 mod 4 = 2?
Tenho vergonha de fazer uma pergunta tão simples. Meu mandato não começa por mais duas semanas, então não posso perguntar a um professor, e o suspense me mataria.
Por que 2 mod 4 = 2?
Respostas:
O módulo (mod,%) é o operador Restante.
2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)
Muito mais fácil se você usar bananas e um grupo de pessoas.
Digamos que você tenha 1 banana e um grupo de 6 pessoas, isso você expressaria: 1 mod 6
/ 1 % 6
/ 1 modulo 6
.
Você precisa de 6 bananas para que cada pessoa do grupo seja bem alimentada e feliz.
Portanto, se você tiver 1 banana e precisar compartilhá-la com 6 pessoas, mas você só poderá compartilhar se tiver 1 banana para cada membro do grupo, ou seja, 6 pessoas, terá 1 banana (o restante, não será compartilhado com ninguém) grupo), o mesmo vale para 2 bananas. Então você terá 2 bananas como restante (nada será compartilhado).
Mas quando você recebe 6 bananas, deve estar feliz, porque há 1 banana para cada membro do grupo de 6 pessoas e o restante é 0 ou nenhuma banana quando você compartilhou todas as 6 bananas em 6 pessoas.
Agora, para 7 bananas e 6 pessoas em grupo, você terá 7 mod 6 = 1
, isso porque você deu a 6 pessoas 1 banana cada e 1 banana é o restante.
Para 12 mod 6
ou 12 bananas compartilhadas em 6 pessoas, cada uma terá duas bananas e o restante será 0.
Eu também estava confuso sobre isso, apenas alguns minutos atrás. Então eu fiz a divisão em um pedaço de papel e fez sentido:
Até onde o computador vai resolver esse problema. O computador pára por aí e retorna o 2, o que faz sentido, pois é o que "%" (mod) está pedindo.
Fomos treinados para colocar o decimal e continuar, e é por isso que isso pode ser contra-intuitivo no início.
Alguém entrou em contato comigo e pediu que eu explicasse com mais detalhes minha resposta no comentário da pergunta. Então, aqui está o que eu respondi a essa pessoa, caso ela possa ajudar outra pessoa:
A operação do módulo fornece o restante da divisão euclidiana (que funciona apenas com números inteiros, e não reais). Se você tem A tal que A = B * C + D (com D <B), então o quociente da divisão euclidiana de A por B é C e o restante é D. Se você dividir 2 por 4, o quociente é 0 e o restante é 2.
Suponha que você tenha objetos A (que você não pode cortar). E você deseja distribuir a mesma quantidade desses objetos para as pessoas B. Contanto que você tenha mais de B objetos, dê 1 a cada um deles e repita. Quando você tem menos de B objetos, você para e mantém os objetos restantes. O número de vezes que você repetiu a operação, vamos chamar esse número C, é o quociente. O número de objetos que você mantém no final, vamos chamá-lo de D, é o restante.
Se você tem 2 objetos e 4 pessoas. Você já tem menos de 4 objetos. Então cada pessoa recebe 0 objetos e você mantém 2.
É por isso que 2 módulo 4 é 2.
O operador do módulo é avaliado para o restante da divisão dos dois operandos inteiros. Aqui estão alguns exemplos:
23 % 10 evaluates to 3 (because 23/10 is 2 with a remainder of 3)
50 % 50 evaluates to 0 (50/50 is 1 with a remainder of 0)
9 % 100 evaluates to 9 (9/100 is 0 with a remainder of 9)
mod significa o alargador quando dividido por. Então 2 dividido por 4 é 0 com 2 restantes. Portanto 2 mod 4 é 2.
Módulo é o restante, expresso como um número inteiro, de uma expressão de divisão matemática.
Então, digamos que você tenha um pixel em uma tela na posição 90, em que a tela possui 100 pixels de largura e adicione 20, ela será posicionada em volta da posição 10. Por que ... porque 90 + 20 = 110, portanto, 110% 100 = 10.
Para eu entender, considero que o módulo é a representação inteira do número fracionário. Além disso, se você fizer a expressão para trás e processar o restante como um número fracionário e depois adicioná-lo ao divisor, ele fornecerá sua resposta original.
Exemplos:
100
(A) --- = 14 mod 2
7
123
(B) --- = 8 mod 3
15
3
(C) --- = 0 mod 3
4
Invertida projetada para:
2 14(7) 2 98 2 100
(A) 14 mod 2 = 14 + --- = ----- + --- = --- + --- = ---
7 7 7 7 7 7
3 8(15) 3 120 3 123
(B) 8 mod 3 = 8 + --- = ----- + --- = --- + --- = ---
15 15 15 15 15 15
3 3
(B) 0 mod 3 = 0 + --- = ---
4 4
Eu acho que você está ficando confuso sobre como a equação do módulo é lida.
Quando escrevemos uma equação de divisão, como 2/4
estamos dividindo 2 por 4.
Quando uma equação de módulo é escrita, como 2 % 4
estamos dividindo 2 by 4
(pense 2 sobre 4) e retornando o restante.
MOD é o operador restante. É por isso que 2 mod 4 fornece 2 como restante. 4 * 0 = 0 e depois 2-0 = 2. Para tornar mais claro, tente fazer o mesmo com 6 mod 4 ou 8 mod 3.
Este é o algoritmo Euclides.
por exemplo
a mod b = k * b + c => a mod b = c, onde k é um número inteiro ec é a resposta
4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0
27 mod 5 = 5 * 5 + 2 => 27 mod 5 = 2
então sua resposta é
2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2
Para:
2 mod 4
Podemos usar essa pequena fórmula que eu inventei depois de pensar um pouco, talvez ela já esteja definida em algum lugar que eu não conheço, mas funcione para mim e seja realmente útil.
A mod B = C
onde C é a resposta
K * B - A = |C|
onde K é quantas vezes B se encaixa em A
2 mod 4
seria:
0 * 4 - 2 = |C|
C = |-2| => 2
Espero que funcione para você :)
Para responder a um módulo x % y
, faça duas perguntas:
A- Quantas vezes y
entra x
sem deixar resíduos? Para 2% 4, é 0.
B- Quanto você precisa adicionar para voltar disso x
? Para passar de 0 a 2, você precisará de 2-0, ou seja, 2.
Eles podem ser resumidos em uma pergunta da seguinte forma: quanto você precisará adicionar ao resultado inteiro da divisão de x
por y
, para voltar x
?
Por número inteiro, entende-se apenas números inteiros e não frações que sejam de interesse.
Um restante de divisão fracionária (por exemplo, 283849) não é interessante no módulo porque o módulo lida apenas com números inteiros.
Para uma maneira visual de pensar sobre isso, imagine um mostrador de relógio que, no seu exemplo particular, só vá para 4 em vez de 12. Se você começar às 4 no relógio (que é como começar no zero) e girar no sentido horário para 2 "horas", você pousa em 2, assim como girar no sentido horário por 6 "horas" também o pousará em 2 (6 mod 4 == 2, assim como 2 mod 4 == 2).
Este pode ser um bom momento para mencionar a função modr (). Ele retorna as partes inteira e restante de uma divisão.
print("\n 17 // 3 =",17//3," # Does the same thing as int(17/3)")
print(" 17 % 3 =",17%3," # Modulo division gives the remainder.")
whole, remain = divmod(17,3)
print(" divmod(17,3) returns ->",divmod(17,3),end="")
print(" because 3 goes into 17,",whole,"times with a remainder of",remain,end=".\n\n")
2 = 0 * 4 + 2
.