import javax.swing.JOptionPane;
é p faze um programa que leia o numero e informe se ele é primo ou nao, e se for p imprimir TODOS os numeros primos menores q ele…como eu faço???
importjavax.swing.JOptionPane;publicclassExercicio01{publicstaticvoidmain(Stringargs[]){Stringaux=JOptionPane.showInputDialog(null,"Entre com o Número: ",“ImprimindonúmerosPrimos”,JOptionPane.QUESTION_MESSAGE);
intn=Integer.parseInt(aux);booleanprimo=true;for(inti=2;i<n;i++){if((n%i)==0)primo=false;}if(primo==true){JOptionPane.showMessageDialog(null,"O número "+n+" é Primo!","Mensagem",JOptionPane.PLAIN_MESSAGE);}elseif(primo==false){JOptionPane.showMessageDialog(null,"O número "+n+" não é Primo!","Mensagem",JOptionPane.PLAIN_MESSAGE);}}
Eu te aconselho a separar as coisas, um metodo só para verificar se é primo ou não e o método principal do teu prog.
Você pode fazer algo assim:
importjavax.swing.JOptionPane;publicclassExercicio01{publicbooleanehPrimo(intnum){booleanprimo=true;for(inti=2;i<num;i++){if((n%i)==0)primo=false;}}returnprimo;}publicstaticvoidmain(Stringargs[]){Stringaux=JOptionPane.showInputDialog(null,"Entre com o Número: ");intn=Integer.parseInt(aux);booleanprimo=ehPrimo(n);if(primo){JOptionPane.showMessageDialog(null,"O número "+n+" é Primo!");//se for primo verifica todos os numeros menores que elefor(inti=n-1;i>0;i--){if(ehPrimo(i)==true){JOptionPane.showMessageDialog(null,"O número "+n+" é Primo!");}else{JOptionPane.showMessageDialog(null,"O número "+n+" não é Primo!");}}}else{JOptionPane.showMessageDialog(null,"O número "+n+" não é Primo!");}}
Eu nem testei o código, essa é só uma idéia...
Primeiro vc verifica se o número digitado é primo ou não, se for vc verifica todos os antecessores.
orlandocn
existe um algoritimo classico chamado crivo de eratostenes lhe sera muito util. Lembrando que voce so precisara testar ate a raiz quadrada do numero em questao
boa sorte
tamiresamelia
mto obrigada pela ajuda…mas eu estou começando agora…nao entendi nada!!!uaihaiua…mas mesmo assim mto obrigada msm XD
orlandocn
não se preocupe, realmente leva um tempo pois numeros primos são de longe uma das areas mais complexas e facinantes da matematica
quanto ao algoritmo do crivo, voce encontra explicacoes aqui
Fiz aqui rapidinho, e bem comentado para você!
Espero que entenda, se não entender, me fala!
importjava.util.Scanner;publicclassPrimoOuNao{//Método responsável por verificar se é primo ou não. //Recebe como parâmetro o número a ser verificado.publicstaticbooleanverificaseehprimo(intnum){booleanprimo=true;//inicia como truefor(inti=2;i<num;i++){if((num%i)==0)//divide o número por i, e ve se o resto é 0. primo=false;//se for, quer dizer que ele não é primo}returnprimo;// retorna o boolean}publicstaticvoidmain(Stringargs[]){Scannerscn=newScanner(System.in);//Declarando o scanner, e falando que é do tipo inSystem.out.println("Digite um número: ");intnumeroaverificar=scn.nextInt();// perceba que eu colokei int, porque numero decimal não é considerado primobooleanprimo=verificaseehprimo(numeroaverificar);//chama o método, passando como parâmetro o número digitadoif(primo){//É a mesma coisa de (if primo == true) --> Se o boolean retornar trueSystem.out.println("O Numero "+numeroaverificar+" é primo!");}else{//se ele não voltou como true:System.out.println("Não é primo!");}}}
tamiresamelia
gente mto obrigada pela ajuda!!! agora eu entendi !!! me ajudou mto XD
R
raghy
oi to acompanhando, mas realmente acho que so saber se ele nao é divisivel por zero, nao garante que é primo…
primo, ele é divisivel por si mesmo não é isso?
entao tem que ser se numero dividido por ele mesmo = 1, certo… ?
é ele… hehe, mas todos são… entao …
outra forma seria ja sabendo quais são os primos, pelo menos até onde interessar…
sendo que existe esta tabela… aí se nao for igual a estes,vc mostra os anteriores que inclusivem pode estar em uma lista…
Entende, vc compara com os que sabe que são primos e se nao for…
poste a resposta para mim ver os resultados e os que acompanham se possivel, ok?
evertonsilvagomesjav
raghy:
oi to acompanhando, mas realmente acho que so saber se ele nao é divisivel por zero, nao garante que é primo…
primo, ele é divisivel por si mesmo não é isso?
entao tem que ser se numero dividido por ele mesmo = 1, certo… ?
é ele… hehe, mas todos são… entao …
outra forma seria ja sabendo quais são os primos, pelo menos até onde interessar…
sendo que existe esta tabela… aí se nao for igual a estes,vc mostra os anteriores que inclusivem pode estar em uma lista…
Entende, vc compara com os que sabe que são primos e se nao for…
poste a resposta para mim ver os resultados e os que acompanham se possivel, ok?
c ta maluco ? ninguem aqui testou se é divisivel por zero, testamos se o mod e diferente de 0…da uma olhada ai direito.
rafaeldiego
evertonsilvagomesjava:
raghy:
oi to acompanhando, mas realmente acho que so saber se ele nao é divisivel por zero, nao garante que é primo…
primo, ele é divisivel por si mesmo não é isso?
entao tem que ser se numero dividido por ele mesmo = 1, certo… ?
é ele… hehe, mas todos são… entao …
outra forma seria ja sabendo quais são os primos, pelo menos até onde interessar…
sendo que existe esta tabela… aí se nao for igual a estes,vc mostra os anteriores que inclusivem pode estar em uma lista…
Entende, vc compara com os que sabe que são primos e se nao for…
poste a resposta para mim ver os resultados e os que acompanham se possivel, ok?
c ta maluco ? ninguem aqui testou se é divisivel por zero, testamos se o mod e diferente de 0…da uma olhada ai direito.
Exatamente com o evertonsilvagomesjava disse, no código, o “mod” vai indicar se o resto da divisão do número é 0 ou não.
Se for zero, significa que é divisível, e o produto é um inteiro.
No caso dos números primos, eles só podem ter mod 0 divindo por 1 e por eles mesmos.
evertonsilvagomesjav
rafaeldiego:
evertonsilvagomesjava:
raghy:
oi to acompanhando, mas realmente acho que so saber se ele nao é divisivel por zero, nao garante que é primo…
primo, ele é divisivel por si mesmo não é isso?
entao tem que ser se numero dividido por ele mesmo = 1, certo… ?
é ele… hehe, mas todos são… entao …
outra forma seria ja sabendo quais são os primos, pelo menos até onde interessar…
sendo que existe esta tabela… aí se nao for igual a estes,vc mostra os anteriores que inclusivem pode estar em uma lista…
Entende, vc compara com os que sabe que são primos e se nao for…
poste a resposta para mim ver os resultados e os que acompanham se possivel, ok?
c ta maluco ? ninguem aqui testou se é divisivel por zero, testamos se o mod e diferente de 0…da uma olhada ai direito.
Exatamente com o evertonsilvagomesjava disse, no código, o “mod” vai indicar se o resto da divisão do número é 0 ou não.
Se for zero, significa que é divisível, e o produto é um inteiro.
No caso dos números primos, eles só podem ter mod 0 divindo por 1 e por eles mesmos.
sim, os exemplos dados ai estao certos.
quikkoo
existem algumas otimizações interessantes a serem feitas nesse código:
a primeira e mais obvia é q poderia evitar de testar os npumeros multiplos de 2 pois, se ele nao é divisivel por 2 ele ñ vai ser por nenhum outro par
quando se encontra um divisor entre 1 e n para n, nao precisa continuar o algoritmo, ele pode retornar de uma vez com o valor false
nao é nessesário testar entre 2 e n, se vc nao encontrou um divisor inteiro até a raiz quadrada de n entao não encontrará para valores maiores, e explicação pra isso num é mto complicada ñ mas eu to com preguiça, mas basicamente é porque as possiveis combinações de multiplicações se repetem