Operador | Exemplo | É equivalente a: |
---|---|---|
*= | x *= 5 | x = x * 5 |
/= | x /= 5 | x = x / 5 |
%= | x %= 5 | x = x % 5 |
+= | x += 5 | x = x + 5 |
-= | x -= 5 | x = x - 5 |
0 2 3 4 6 8
# dados de entrada print("Cálculo dos n primeiros múltiplos de i ou de j") n = int(input("Digite n: ")) i = int(input("Digite i: ")) j = int(input("Digite j: ")) cont = 0 #conta quantos múltiplos foram impressos. cm = 0 #candidato a múltiplo. while cont < n: if cm%i == 0 or cm%j == 0: print(cm) cont += 1 cm += 1Segunda solução: Mais elaborada. Faz menos iterações que a anterior. A cada iteração imprime um múltiplo de i ou j.
# dados de entrada print("Cálculo dos n primeiros múltiplos de i ou de j") n = int(input("Digite n: ")) i = int(input("Digite i: ")) j = int(input("Digite j: ")) multi = 0 # múltiplos de i multj = 0 # múltiplos de j cont = 0 # conta quantos múltiplo foram impressos while cont < n: if multi < multj: print(multi) multi += i elif multj < multi: print(multj) multj += j else: # multi == multj print(multj) multi += i multj += j cont += 1
Um número natural é um número primo quando ele tem exatamente dois divisores naturais distintos: o número um e ele mesmo. Por definição, 0 e 1 não são números primos.
Primeira solução: Um número primo n não pode ser divisível por nenhum outro número no intervalo [2,n-1]. Logo, testamos todos candidatos a divisores possíveis no intervalo [2,n-1], e usamos um indicador de passagem (variável primo) para sinalizar a ocorrência desse evento (divisão). Ao final do programa vale que primo == False se e somente se o número dado não é primo.
print("Teste de primalidade") n = int(input("Digite um inteiro: ")) # o número é primo até que se prove o contrário primo = True #indicador de passagem d = 2 #os candidatos a divisores positivos de n while d < n: if n%d == 0: primo = False # não é primo! d += 1 if n <= 1: #nenhum número natural <= 1 é primo. primo = False if primo: print("O número é primo") else: print("O número não é primo")
Segunda solução: Reduz o espaço de busca, testando apenas os candidatos a divisores positivos de n no intervalo 2,3,4,...,n/2.
print("Teste de primalidade") n = int(input("Digite um inteiro: ")) if n <= 1: #nenhum número natural <= 1 é primo. primo = False else: # o número é primo até que se prove o contrário. primo = True #indicador de passagem d = 2 #os candidatos a divisores positivos de n. while d <= n//2 and primo: if n%d == 0: primo = False # não é primo! d += 1 if primo: print("O número é primo") else: print("O número não é primo")
Terceira solução: Reduz o espaço de busca ainda mais. Testa se o número é par fora do laço principal. Dentro do while só testa candidatos a divisores ímpares.
print("Teste de primalidade") n = int(input("Digite um inteiro: ")) if n <= 1: #nenhum número natural <= 1 é primo. primo = False elif n%2 == 0 and n > 2: primo = False #nenhum número par > 2 é primo. else: # o número é primo até que se prove o contrário # vale que n é um ímpar maior que 1 ou é 2. primo = True #indicador de passagem d = 3 #os candidatos a divisores positivos de n são 3,5,7,...,n/2 while d <= n//2 and primo: if n%d == 0: primo = False # não é primo! d += 2 if primo: print("O número é primo") else: print("O número não é primo")Outras possíveis otimizações podem ser encontradas aqui.
O MDC de dois números inteiros é o maior número inteiro que divide ambos sem deixar resto.
Exemplos:
Algoritmo de Euclides: Para dois números A e B:
print("MDC entre A e B:") a = int(input("Entre com A: ")) b = int(input("Entre com B: ")) if a < b: a,b = b,a while b > 0: r = a%b a = b b = r print("MDC =",a)