Numeros primos

1. Numeros primos

João Ricardo
ricardoschet

(usa Debian)

Enviado em 13/05/2013 - 09:55h

Preciso montar um algorítmo, que dado um número n ele busque 2 números primos que multiplicados entre si dê o meu número n.

Exemplo:
21 = 3*7
15 = 3*5

Consegui montar o algoritmo para buscar os numeros primos até um número específico.
Agora estou tentando fazer a outra parte, mas há algo errado com meu código.
O que poderia ser?


int n = 1, n2, cont;
float r = 0;
boolean encontrou = false;
int contador = 0;
int num1 = 0;
int num2 = 0;
int numerodesejado = 21;
boolean eprimo = false;

while (n < numerodesejado || encontrou==false) {
n2 = n - 1;
for (cont = n2; cont >= 2; cont--) {
r = n % cont;
if (r == 0) {
// System.out.println("O numero " + n + " não é primo!");
cont = 1;


}
}
if (r != 0) {
System.out.println("O numero " + n + " é primo!");
if (num1 == 0){
num1 = n;
System.out.println("Primeiro numero " + num1);
}
else if (num1 > 0){
num2=n;
System.out.println("Segundo numero " + num2);
}
if (num1 * num2 == numerodesejado){
encontrou = true;
System.out.println(num1);
System.out.println(num2);
}
num1=0;
num2=0;
}
n++;
}




  


2. Re: Numeros primos

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 26/07/2013 - 16:50h

Olá ricardoschet.
Para um número n qualquer talvez não seja possível pois suponha que o número escolhido seja 13.Treze só pode ser escrito como 13*1, mas 1 não é primo, portanto não existe dois números que multiplicado dê como resultado 13.