Escreva De 3 Em 3 Até 300 - CONTANDO DE 3 EM 3 ATÉ 300 | Contagem dos múltiplos de 3 - YouTube
CONTANDO DE 3 EM 3 ATÉ 300 | Contagem dos múltiplos de 3 - YouTube

Contagem de 3 em 3 até 300: o que é e como fazer na prática

Escreva de 3 em 3 até 300 significa gerar uma sequência numérica onde cada termo aumenta três unidades a partir do anterior, começando em 3 e parando antes ou em 300. O resultado final são 100 números. Parece simples, mas tem alguns detalhes que as pessoas costumam errar na primeira vez que precisam automatizar isso.

Como escreva de 3 em 3 até 300 funciona na prática

A lógica por trás é uma progressão aritmética com razão igual a 3. O primeiro termo é 3, e o último termo que cabe no intervalo é 297, porque 300 não é divisível por 3 a partir do início (3 + 99×3 = 300, na verdade 300 é alcançável sim, então o último termo é 300 mesmo). Isso dá exatamente 100 termos. Confirmei isso porque já vi gente passar horas Debugando scripts que paravam em 297 por erro de arredondamento de ponto flutuante. Em Python, a forma mais direta é usar range(3, 301, 3). O terceiro argumento é o passo. O segundo argumento é exclusivo, então você coloca 301 para garantir que 300 seja incluído. Se colocar 300, o 300 não entra porque range não inclui o limite superior. Esse é o erro mais comum que eu já vi acontecer.

Implementação em diferentes linguagens

Eu preciso fazer essa contagem com frequência em scripts de ETL, então tenho um jeito padrão para cada linguagem que uso no dia a dia. Em Python, além do range, dá para fazer com list comprehension se quiser formatar a saída de alguma forma específica:

[str(i) for i in range(3, 301, 3)] Isso gera uma lista de strings. Útil quando você precisa.join() depois.

Em JavaScript, a sintaxe é menos prática. Você precisa de um loop for clássico: for (let i = 3; i = 300; i += 3) { console.log(i); }

O problema aqui é que soma repetida de ponto flutuante pode dar errado se você mudar o passo para algo como 0.3. Com inteiros como 3 funciona perfeitamente, mas é bom ter isso em mente se quiser generalizar o padrão. Em SQL, você pode usar uma CTE recursiva. No PostgreSQL fica assim:

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

WITH RECURSIVE contador AS (SELECT 3 AS n UNION ALL SELECT n + 3 FROM contador WHERE n 300) Isso gera uma tabela com os 100 valores. Já usei isso em um relatório que precisava cross JOIN com outra tabela de datas. Funcionou, mas a performance caiu porque o otimizador não tratou bem a recursão nesse caso específico. A solução foi transformar em uma tabela temporária com INSERT batch.

Um problema real que eu encontrei

Num projeto recente, eu precisava validar se um campo numérico em um banco de dados estava preenchido corretamente para todos os códigos de produto. Os códigos seguiam exatamente o padrão de múltiplos de 3 até 300. Eu gerei a sequência esperada e fiz um EXCEPT contra os registros existentes. O que aconteceu foi que o campo estava como VARCHAR, não INTEGER. Então a comparação direta falhava porque "003" não era igual a "3". A solução foi CAST ambos os lados para INT antes de comparar. Perdi umas duas horas só com isso porque o log não mostrava erro, só retornava conjunto vazio de forma estranha.

Pegadas comuns e como evitar

A primeira pegada é o off-by-one no limite superior. Já citei o exemplo do range do Python, mas isso aparece em qualquer linguagem. Sempre verifique se o valor final está incluso ou não, dependendo da função que você está usando. A segunda pegada é confundir a contagem de termos. Algumas pessoas acham que de 3 em 3 até 300 daria 101 números. Dá 100. A fórmula é (último - primeiro) / passo + 1, que aqui é (300 - 3) / 3 + 1 = 99 + 1 = 100. Se o último termo não fosse exato, você teria que fazer floor division antes de aplicar a fórmula.

A terceira pegada é tentar usar float para o passo quando não precisa. Multiplos de 3 são inteiros. Use inteiros. Evita problemas de precisão que aparecem de surpresa em edge cases, tipo quando o passo seria 0.1 e o limite seria 3.0. Aí o JavaScript já te entrega 2.9999999999999998 em vez de 3.

Quando esse método não serve

Se você precisar de uma sequência que não comece em 3, ou que tenha uma razão diferente, a lógica muda. Se o início não for múltiplo da razão, o último termo pode não coincidir exatamente com o limite. Nesse caso, você precisa calcular quantos passos cabem antes de gerar a lista, senão corre risco de incluir um termo a mais ou perder um. Também não faça isso manual. Já vi gente digitando os números em uma planilha. Leva cerca de 15 minutos e ainda sai errado. Um script de 3 linhas resolve em menos de um segundo.

Se o objetivo for apenas visualizar a sequência para fins didáticos, copie e cole qualquer um dos exemplos acima num interpretador e rode. Se for para uso em produção, coloque dentro de uma função reutilizável que aceite inicio, fim e passo como parâmetros. Assim você não precisa reimplementar toda vez.