Os Múltiplos De 5 Que Estão Entre 9 E 37 - Os Múltiplos De 5 Que Estão Entre 9 E 37 - FDPLEARN
Os Múltiplos De 5 Que Estão Entre 9 E 37 - FDPLEARN

Como encontrar múltiplos de 5 num intervalo

Achei isso meio básico, mas às vezes chega uma pergunta direta e precisa responder na hora. O primeiro passo é lembrar como múltiplo funciona. Um número é múltiplo de 5 quando a divisão por 5 resulta em um número inteiro, sem resto. Isso significa que ele termina sempre em 0 ou 5.

os múltiplos de 5 que estão entre 9 e 37

Achei isso interessante porque muita gente erra o critério de fronteira. Tem gente que pensa "entre 9 e 37" e inclui 40 porque acha que é o próximo múltiplo depois de 35. Já vi isso em planilhas de estoque, onde o cara colocou um item que não existia no intervalo. A regra é clara: o número tem que ser estritamente maior que 9 e estritamente menor que 37. Isso elimina o 5 e o 40, que muitas pessoas tentam enrolar aí. Para resolver de verdade, você faz uma conta rápida. Divide 9 por 5. Vai dar 1,8. O próximo inteiro a partir daí é 2. Multiplica 2 por 5 e você tem o primeiro múltiplo: 10. Agora pega 37 e divide por 5. Vai dar 7,4. O maior inteiro possível aqui é 7. Multiplica 7 por 5 e chega em 35. Pronto. Os múltiplos são 10, 15, 20, 25, 30, 35.

Tinha um problema uma vez que era bem chato. Tinha que automatizar essa verificação para um sistema de pontuação de avaliação, onde os níveis iam de 0 a 100 e precisava filtrar todos os múltiplos de 5 entre dois valores informados pelo usuário. A dificuldade era quando o limite inferior era exatamente um múltiplo de 5. Se você usasse ceiling do jeito tradicional, funcionava. Mas o JavaScript tem uma pegadinha com números de ponto flutuante que às vezes te dá resultados errados. Usei Math.ceil e Math.floor mesmo, mas validei com casas decimais para garantir. O código ficou algo assim:

👉 Clique no botão abaixo para saber mais sobre o assunto!

function multiplosDe5(min, max) {
  const primeiro = Math.ceil(min / 5) * 5;
  const ultimo = Math.floor(max / 5) * 5;
  const resultado = [];
  for (let i = primeiro; i 
= ultimo; i += 5) {
    resultado.push(i);
  }
  return resultado;
}

Se passar 9 e 37, volta [10, 15, 20, 25, 30, 35]. Se passar 10 e 37, também funciona porque o Math.ceil de 10/5 é exatamente 2. A questão é quando os números têm casas decimais. Aí oMath.ceil pode te pregar uma peça. No final usei uma função que arredonda o mínimo para cima e o máximo para baixo antes de calcular, pra evitar esses bugs silenciosos. Outra coisa que as pessoas costumam confundir é a diferença entre múltiplo e divisor. Múltiplo de 5 significa que o número é divisível por 5. Divisor de 5 seria qualquer coisa que divide 5, que nesse caso seria só 1 e 5. São lados opostos da mesma operação. Em exercícios escolares já vi muita gente listar 1, 5, 10, 15 quando o enunciado pedia múltiplos de 5 entre dois valores. Mistura os conceitos na hora.

Também tem o caso dos intervalos fechados versus abertos. Na matemática pura, "entre" geralmente é interpretado como estrito, mas em programação e em contextos práticos nem sempre. Se o problema dissesse "de 9 a 37 inclusive", o resultado muda dependendo se os limites forem múltiplos. 36 por exemplo não é múltiplo de 5, então não altera. Mas se fosse "entre 10 e 35 inclusive", aí sim você incluiu 10 e 35 nos dois casos. É meio óbvio, mas é onde as dúvidas aparecem de verdade. Outro detalhe que ninguém fala é sobre múltiplos negativos. A pergunta foi sobre 9 e 37, então não tem impacto aqui, mas se você estivesse varrendo um intervalo maior, poderia encontrar múltiplos negativos. O próprio código acima lida com isso, desde que o limite inferior seja negativo. Math.ceil se comporta diferente de Math.floor com números negativos, então o primeiro múltiplo pode não ser o que você espera no início.

Resumindo o que importa: os múltiplos de 5 entre 9 e 37 são 10, 15, 20, 25, 30 e 35. Se precisar automatizar isso, o código acima funciona para a maioria dos casos. Só cuidado com entradas de ponto flutuante e com a interpretação do que significa "entre" no seu contexto.