Números primos java

/* Escrever um algoritmo que calcula e escreve os números primos entre n até 100.*/
import java.util.Scanner;

public class Exec14 {

public static void main(String[] args) {
    
    Scanner t = new Scanner(System.in);

    System.out.println("Digite um número o número 1");
    int n = t.nextInt();
    for (int i = n; i <= 100; i++) {
        for (int j = i; j > 0; j--) {
            if(n%j==0){
               if(n<=2){
                    System.out.println(" "+n);
               }
            }
        }
    }

}

}

Não funciona, só aparece o número que eu digitei

Por que só imprime números MENORES ou iguais a 2?

Tem alguns erros de lógica no seu código.

Fiz esse código aqui que creio que faça exatamente o que você quer, da uma olhada nele e vê se entende a lógica, qualquer dúvida só perguntar :slight_smile:

public class CalculaPrimo {

    public static void main(String[] args) {
        Scanner t = new Scanner(System.in);

        System.out.println("Digite um número");
        int n = t.nextInt();

        for (int i = n; i <= 100; i++) {

            if (primo(i)) {
                System.out.println(" " + i);
            }

        }
    }

    private static boolean primo(int numero) {
        for (int j = 2; j < numero; j++) {
            if (numero % j == 0) {
                return false;
            }
        }
        return true;
    }
}

Porque números primos são divisíveis apenas por 1 ou ele mesmo.

Sim, esta é a definição, Mas, como o @RanDOmiZEr mostrou, você não precisa desta validação, não é?

verdade, a lógica estava errada.

1 curtida