Informática, perguntado por angeloferrari2oyr9bz, 1 ano atrás

29)Criar um programa que receba um número N e imprima na tela os enésimos números ímpares.
Exemplo, se n = 10 então a impressão deverá ser: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19. Utilizar a
classe Scanner e o comando for.

Soluções para a tarefa

Respondido por bokomoko
1
tem duas formas de fazer esse programa, ambas usando o comando for

Uma é simplesmente variar um contador de 1 em 1 até o n e testar se o resto da divisão do contador por 2 for diferente de 0. Se for diferente, o número é impar e assim vamos listá-lo
Essa é a forma mais comum e pouco eficiente.

Uma forma mais inteligente é calcular o primeiro número ímpar dentro do intervalo e contar de 2 em 2 e simplesmente ir listando. É muito mais rápido.

Em java, a primeira alternativa seria assim

for(int i=1; i<=n; i++){
    if (i %2 !=0) { 
         System.out.println("O número "+i+" é ímpar" );
    };
}

Totalmente funcional. O problema é que o if dentro do for vai ser executado n vezes. Se o n for pequeno, num tem problema. Se o n for grande, pode tornar o programa lento

Uma alternativa para fazer isso mais rápido é 
n = 
n-(n%2==0);
for(int i=1; i<=n; i+=2){
         System.out.println("O número "+i+" é ímpar" );
}

Nessa alternativa, o teste (que nem é um if) é feito apenas uma vez fora do loop. Muito mais rápido.

Agora só falta usar a classe scanner para obter os valores 

O programa pode ser encotnrado aqui
https://repl.it/@bokomoko/lista-impares

angeloferrari2oyr9bz: obrigado me ajudou mt
Perguntas interessantes