como faço para ver se um número é primo e como faço para ver todos os primos do numero?
alguem me pode ajudar.
Agradecia
numero primo soh é divisivel por 1 e por ele mesmo…
:lol:
agora ver os primos do numero ???
mu, intendi…
:?:
O que vc já tentou fazer? Posta ae! Tente alguma coisa!
Todo primo só é divisível por 1 e por ele mesmo, portanto:
List<Integer> numeros = new ArrayList<Integer>();
for(int i = 0; i <= 71; i++){
numeros.add(i);
}
int contador;
int numero = 0;
for (Integer i : numeros) {
contador = 0;
for (int u = 1; u <= i; u++) {
if (i % u == 0) {
contador++;
numero = u;
}
}
if (contador == 2) {
System.out.println("O Número: " + numero + " é primo e seus primos são: 1 e "+ numero);
}
}
:thumbup:
O que você deve fazer para saber se um número é primo é fazer um for que vai de 1 até o próprio número e dentro desse for você coloca o teste
if (numero%i==0)
aí se você achar algum divisor que não seja 1 ou o proprio número ele já pode ser desconsiderado.
Quanto aos primos do número, não seria primos entre si?
números que não tem divisores em comum
entendi perfeitamente Brigadão.
Bom vamos lá
public class Primo {
public static void main(String[] args) {
int primo = Integer.valueOf( args[0] );
boolean isPrimo = true;
int divisor = 0;
for (int i = 2; i <= primo; i++) {
if ( ( (primo % i) == 0) && (i != primo) ) {
isPrimo = false;
divisor = i;
break;
}
}
if (isPrimo) {
System.out.println( "é Primo" );
} else {
System.out.println( "Não é Primo --> " + divisor );
}
}
}
Agora se vc quer todos os números capazes de dividir esse numero altera para isso:
import java.util.ArrayList;
public class Primo {
public static void main(String[] args) {
int primo = Integer.valueOf( args[0] );
boolean isPrimo = true;
ArrayList<Integer> divisor = new ArrayList<Integer>();
for (int i = 2; i <= primo; i++) {
if ( ( (primo % i) == 0) && (i != primo) ) {
isPrimo = false;
divisor.add( i );
}
}
if (isPrimo) {
System.out.println( "é Primo" );
} else {
System.out.print( "Não é Primo e seus divisores são --> ");
for (Integer i : divisor) {
System.out.print( i + ", ");
}
}
}
}
Se eu soubesse não lhe falaria, pois até outro dia essa resposta valia 1 milhão de dólares.
Por força bruta, como esse programa aqui em cima, dá para responder essa pergunta tranquilamente, só que o seu computador vai demorar alguns anos para te dizer se o número 13421423421412592340334953405934533453 é primo.
Dá uma lida aqui. Se entender o que os indianos fizeram depois me explica…
No for não é necessário ir até o número vai até a raiz quadrada dele, se não achar nenhum divisor então não vai ter mais pra frente.
Ex.: o raiz quadrada de 169 é 13 primeiro divisor depois do 1.
Não existem “primos do número” (se o número é Joaquim, seus primos são Manoel e Pedro?);
existem “divisores primos do número”.
Para achar os divisores primos de um número (ou seja, fatorá-lo), existem diversas técnicas. (Veja http://en.wikipedia.org/wiki/Integer_factorization )
A mais simples é calcular a raiz quadrada desse número, e achar os primos até a raiz quadrada desse número. Então se faz a divisão por tentativas.
(Veja http://en.wikipedia.org/wiki/Trial_division ).
Um exemplo: digamos que você queira saber os fatores primos do número 1234567.
Primeiramente, sabemos que a raiz quadrada desse número é 1111.
Então sabemos que no mínimo devemos achar os primos até o número 1111.
Para achar os primos de 2 até 1111, devemos usar um algoritmo chamado “Crivo de Erastótenes” (veja http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes ).
Uma vez achados os primos, vamos começar a dividir o número.
O primeiro número que divide 1234567 é 127 (dando o valor 9721). Mas 9721 também é primo (aham - ele é maior que 1111; fica como exercício você descobrir que 9721 é primo), e então a fatoração terminou.
Note que para números não muito grandes, a fatoração por esse método é inviável porque a raiz quadrada de um número grande é também grande e você não consegue armazenar todos os números primos até esse valor, para fazer o tal crivo.
Se você quiser usar um método do próprio Java que determina se um número é provavelmente primo (ou seja, pode ser que o número não seja primo embora o método ache que é primo - mas com uma probabilidade bastante reduzida, menor que a de você ganhar a Mega-Sena 3 vezes seguidas) - você pode usar isProbablePrime, mas não há no Java um método que faça a fatoração conforme você quer.
Bem estou trabalhando a lógica… então estou procurando não utilizar muito a linguagem.
Abaixo segue como calculei o numero primo.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Digite o numero: ");
int numero=in.nextInt();
double numeroDouble=numero;
if ((numeroDouble/numeroDouble)==(numero/numero)){
if(numeroDouble/2!=numero/2 || numero==2){
System.out.println("Este numero é primo!");
} else {
System.out.println("Este numero não é primo!");
}
} else {
System.out.println("Numero não é primo!");
}
}
[quote=dap1995]Bem estou trabalhando a lógica… então estou procurando não utilizar muito a linguagem.
Abaixo segue como calculei o numero primo.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Digite o numero: ");
int numero=in.nextInt();
double numeroDouble=numero;
if ((numeroDouble/numeroDouble)==(numero/numero)){
if(numeroDouble/2!=numero/2 || numero==2){
System.out.println("Este numero é primo!");
} else {
System.out.println("Este numero não é primo!");
}
} else {
System.out.println("Numero não é primo!");
}
}
[/quote]
Esse código não faz qualquer sentido. Ele está testando se o número é divisível por ele mesmo no primeiro if? Isso é uma tautologia. Todo número é divisível por ele mesmo dá 1 e resto 0.
O segundo está testando se é divisível por 2. Mas você pode ter números que são divisíveis por si mesmo, não são por 2, mas não são primos, como é o caso do número 9 (divisível por 3).
Além disso, para testar se um número é divisível por outro, você pode usar o operador de resto. Lembre-se, quando um número é divisível por outro, o resto é 0.