Pergunta

Eu gostaria de imprimir todos os números primos de uma matriz com método. Eu posso fazer isso com um int, mas não sei como devolver certos números da matriz. Obrigado pela ajuda!

public static boolean isPrime(int [] tab) {
        boolean prime = true;
        for (int i = 3; i <= Math.sqrt(tab[i]); i += 2)
            if (tab[i] % i == 0) {
                prime = false;
                break;
            }
        for(int i=0; i<tab.length; i++)
        if (( tab[i]%2 !=0 && prime && tab[i] > 2) || tab[i] == 2) {
            return true;
                } else {
            return false;
        }
        //return prime;

}

Obrigado a vocês dois. Parece que está resolvido:

public static void isPrime(int[] tab) {
        for (int i = 0; i < tab.length; i++) {
            if (isPrimeNum(tab[i])) {
                System.out.println(tab[i]);
            }
        }


    }

    public static boolean isPrimeNum(int n) {
        boolean prime = true;
        for (long i = 3; i <= Math.sqrt(n); i += 2) {
            if (n % i == 0) {
                prime = false;
                break;
            }
        }
        if ((n % 2 != 0 && prime && n > 2) || n == 2) {
            return true;

        } else {
            return false;
        }
    }
Foi útil?

Solução

Eu sugiro que você separe isso em dois métodos:

  • Um método para determinar se um único número é o Prime
  • Um método para iterar através de uma matriz, chamar o primeiro método com cada número e imprima os valores para os quais o método retorna true.

Isso separa as duas preocupações ordenadamente. Se você estiver preso exatamente sobre como fazer isso, forneça detalhes sobre qual parte você acha difícil. (Estou assumindo que este é o dever de casa, e é por isso que não incluí o código.)

Outras dicas

Supondo que você tenha:

  • Uma variedade de números inteiros, com alguns sendo o Prime e outros não sendo o Prime.
  • Uma função para testar se um desses números é primo.

Simplesmente itera sobre a matriz e para cada número:

if (isPrime(n)) {
    system.out.println(n);
}

Você provavelmente não quer tentar fazer vários INTs de uma só vez, um de cada vez deve ser muito mais simples de codificar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top