"Dados números inteiros n, i e j, todos maiores do que zero, imprimir em ordem crescente os n primeiros naturais que são múltiplos de i ou de j e ou de ambos. Por exemplo, para n = 6, i = 2 e j = 3 a saída deverá ser: 0 2 3 4 6 8" A linguagem é python
Soluções para a tarefa
No programa abaixo, não há validação de dados ou um tratamento de erros/exceções, ou seja, espera-se que o usuário utilize de forma correta, mais sobre nos comentários embaixo do código.
Ainda, tenha em vista que esta é apenas uma das diversas possibilidades existentes de resolver o problema.
Obs.: Os pontos que precedem as linhas foram colocados apenas para garantir a indentação, não fazem parte do programa.
n=int(input('Digite o valor de n: '))
i=int(input('Digite o valor de i: '))
j=int(input('Digite o valor de j: '))
mults=set()
for c in range(0,n):
.....mults.add(c*i)
.....mults.add(c*j)
mults=sorted(mults)
print(f'Os {n} primeiros múltiplos são: ',end='')
for v in range(0,n):
.....print(mults[v],end=' ')
Comentários:
--> Começamos lendo os dados necessários (n, i, j) pela função input() já convertida para inteiro pela função int().
--> Declaramos um set() (uma coleção de valores sem repetição) no qual vamos guardar os múltiplos de "i" e "j".
--> Com auxilio de um laço for, vamos adicionar no set com o método add() os "n" primeiros múltiplos de "i" e os "n" primeiros múltiplos de "j". Perceba que aqui está o porquê de utilizar um set, os múltiplos repetidos não serão adicionados, o próprio método add se encarrega de ignorar valores repetidos.
--> Em seguida, utilizamos a função sorted() para deixar o set em ordem crescente e guardamos na mesma variável (mults).
--> Por fim, utilizamos outro laço for para mostrar ao usuário os "n" primeiros múltiplos que foram guardados no set mults.
--> Como dito anteriormente, caso o usuário utilize incorretamente o programa, ocorrerão erros/exceções. Por exemplo, se o usuário digitar valores não inteiros para "n", "i" ou "j" ocorrerá um "ValueError", se digitar valores menores que 1 para para "i" ou "j" estaremos desrespeitando o proposito do programa (apenas múltiplos Naturais).
Na figura anexada, é possível ver o código e alguns exemplos de funcionamento do programa.
A função sorted pode ser substituída, mas tornaria o código mais "complexo" sem proposito.
Basta saber que esta função vai ordenar o set (ou outra coleção de elementos qualquer).
Ficaria assim o trecho utilizando mults como uma lista:
mults=list()
for c in range(0,n):
if c*i not in mults:
mults.append(c*i)
if c*j not in mults:
mults.append(c*j)
mults=list()
for c in range(0,n):
.....if c*i not in mults:
..........mults.append(c*i)
.....if c*j not in mults:
..........mults.append(c*j)