Faca um algoritmo que encontre o primeiro múltiplo de 11, 13 ou 17 após um número dado.
Passo 1
O enunciado pede que, dado um número inteiro
, a gente encontre o menor inteiro maior que
que seja múltiplo de 11, 13 ou 17. O conteúdo aqui é aritmética modular e uso de função teto (
).
Passo 2
Para evitar iterar um a um, podemos calcular diretamente o próximo múltiplo de cada divisor usando uma propriedade da divisão inteira e do teto. Assim, não precisamos de loops longos.
Para um divisor , o menor múltiplo de
estritamente maior que
é dado por:
Para um divisor
Calculamos então
Passo 3
Basta escolher o menor entre
,
e
, pois esse será o primeiro múltiplo de 11, 13 ou 17 após
.
Resposta
Algoritmo em pseudocódigo:
Entrada: inteiro N
// Calcula o próximo múltiplo de cada divisor
M11 ← 11 * ceil((N+1)/11)
M13 ← 13 * ceil((N+1)/13)
M17 ← 17 * ceil((N+1)/17)
M11 ← 11 * ceil((N+1)/11)
M13 ← 13 * ceil((N+1)/13)
M17 ← 17 * ceil((N+1)/17)
// Escolhe o menor valor
se M11 ≤ M13 e M11 ≤ M17 então
Retorne M11
senão se M13 ≤ M17 então
Retorne M13
senão
Retorne M17
fim se
se M11 ≤ M13 e M11 ≤ M17 então
Retorne M11
senão se M13 ≤ M17 então
Retorne M13
senão
Retorne M17
fim se