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 N, a gente encontre o menor inteiro maior que N que seja múltiplo de 11, 13 ou 17. O conteúdo aqui é aritmética modular e uso de função teto ( lceilcdotrceil).

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 k, o menor múltiplo de k estritamente maior que N é dado por:
Mk = k times lceil N+1k rceil
Calculamos então
M11 = 11 times lceil N+111 rceil, M13 = 13 times lceil N+113 rceil, M17 = 17 times lceil N+117 rceil

Passo 3

Basta escolher o menor entre M11, M13 e M17, pois esse será o primeiro múltiplo de 11, 13 ou 17 após N.

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)
// 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

Exercícios relacionados