Erro em multiplicar numeros primos aos elementos de um vetor

A questão pede para pegarmos o primeiro elemento do vetor que seja primo e multiplique aos demais elementos que estão no vetor.
Fiz a questão mas ele apresenta erro ao rodar. Segue o código…

package matrizes;
/*
   Faça um algoritmo que leia um vetor de 5 posições de valores numéricos.//
   Depois da leitura, multiplique todos seus elementos pelo primeiro número primo encontrado
   no vetor. Se não houver número primo no vetor não altere os seus valores. 
   Mostre o vetor após o processamento.
 */

import java.util.Scanner;

public class Questao11 {

	public static void main(String[] args) {

		int[] num = new int[5];
		int cont=0;
		int primPrimo = 0;

		Scanner input = new Scanner(System.in);

		System.out.println(" Informe os números :");

		for (int i = 0; i < num.length; i++) {

			num[i] = input.nextInt();
			
			for(int j=0 ;j<=num[i] ; j++) {
				
				if(num[i]%j==0) {
					
				 cont = cont +1; 	
					
				}
				if(cont>=3) {
					
					primPrimo=num[i];
					
					break;
				}
				
			}
			
			
		}
		
		  for(int k=0 ;k<num.length ; k++ ) {
			
			  System.out.print(num[k]*primPrimo + "   ");
			
					
		 }
				
	 }

 }

Alguem poderia me ajudar?

Existem algumas coisas erradas no seu código.
Primeiramente, na sua lógica de verificação de números primos, você está utilizando um loop aninhado para percorrer os elementos do vetor e, dentro dele, outro loop para verificar se o número é primo. Isso está causando problemas, pois o loop interno não está funcionando corretamente e não está contando o número correto de divisores.
E no momento em que você usou o contador para verificar se o número é primo está contando divisores incluindo o próprio numero, ele deve contar até o numero - 1, e também dentro do loop de verificação de numero primo, seu if deve ser: cont==2.
Além disso, você não está armazenando o primeiro primo encontrado no vetor, apenas armazenando o ultimo número primo verificado, e isso está causando problemas.

1 curtida

Aqui está um exemplo de uma função em Java que verifica se os números dentro de um vetor são primos:

public static void checkPrimeNumbers(int[] numbers) {
    for (int number : numbers) {
        if (isPrime(number)) {
            System.out.println(number + " is a prime number.");
        } else {
            System.out.println(number + " is not a prime number.");
        }
    }
}

A função “checkPrimeNumbers” recebe como argumento um vetor de inteiros e usa o operador “for each” para percorrer cada elemento do vetor. Para cada número no vetor, a função chama a função “isPrime” que verifica se o número é primo. A função imprime “X is a prime number.” se o número é primo e “X is not a prime number.” se o número não é primo.

Aqui está como você poderia usar essa função para verificar se os números dentro de um vetor são primos:

int[] numbers = {2, 3, 4, 5, 6, 7, 8, 9, 10};
checkPrimeNumbers(numbers);

O resultado seria:

2 É um numero primo
3 É um numero primo
4 Não é um numero primo
5 É um numero primo
6 Não é um numero primo
7 É um numero primo
8 Não é um numero primo
9 Não é um numero primo
10 Não é um numero primo

Note que essa função tem uma complexidade temporal O(n*sqrt(n)) e é eficiente para vetores pequenos, mas para vetores grandes, existem outras técnicas mais eficientes como teste de Miller-Rabin, Sieve of Eratosthenes e outras.

1 curtida

Só faltou a implementação do mais importante, o método isPrime.

1 curtida