Numeros primos_me ajudem!

12 respostas
tamiresamelia

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???

import javax.swing.JOptionPane;

public class Exercicio01{

public static void main(String args[]){

String aux = JOptionPane.showInputDialog(null,

"Entre com o Número: ", Imprimindo números Primos,

JOptionPane.QUESTION_MESSAGE);
int n = Integer.parseInt(aux);
    boolean primo = true;
    for(int i=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);
    }
    else if( primo==false ){
        JOptionPane.showMessageDialog(null,
            "O número " + n + " não é Primo!",
            "Mensagem", JOptionPane.PLAIN_MESSAGE);
    }
}

}

12 Respostas

fesaab

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:

import javax.swing.JOptionPane; 
public class Exercicio01{ 

    public boolean ehPrimo(int num){
        boolean primo = true;
        for(int i=2; i<num; i++){ 
            if( (n%i)==0 ) 
                 primo = false; 
            }
        }
        return primo;
    }


    public static void main(String args[]){ 
        String aux = JOptionPane.showInputDialog(null, "Entre com o Número: ");

        int n = Integer.parseInt(aux);
        boolean primo = ehPrimo(n);

        if (primo){
            JOptionPane.showMessageDialog(null, "O número " + n + " é Primo!");            
            //se for primo verifica todos os numeros menores que ele
            for(int i = 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

evertonsilvagomesjav

dê uma olhada.

static String getAntecessoresPrimos(int numPrimo){
					
			String antecessoresPrimos = "Numeros primos antecessores do numero (" +numPrimo +")" +" ";
			
		for(int numeroPrimo = numPrimo; numeroPrimo >= 2; numeroPrimo--){
			
				int primo = numeroPrimo -1;
				
				boolean verifica = true;
			
			while(verifica && primo > 1){
				
				if(numeroPrimo % primo != 0){
					
					verifica = true;
					
					primo--;
					
				}else if(numeroPrimo % primo == 0){
					
					verifica = false;
				
				}
			}
		
			if(verifica){
			
				antecessoresPrimos += numeroPrimo +" ";
					
			}
				
		}
			
			return antecessoresPrimos;
	}
pedroroxd
Fiz aqui rapidinho, e bem comentado para você! Espero que entenda, se não entender, me fala!
import java.util.Scanner;

public class PrimoOuNao {
	
//Método responsável por verificar se é primo ou não. 
//Recebe como parâmetro o número a ser verificado.
	public static boolean verificaseehprimo(int num) { 
		boolean primo = true; //inicia como true
		for (int i = 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
		}
		return primo; // retorna o boolean
	}

	public static void main(String args[]) {
		Scanner scn = new Scanner(System.in); //Declarando o scanner, e falando que é do tipo in
		System.out.println("Digite um número: ");
		int numeroaverificar = scn.nextInt(); // perceba que eu colokei int, porque numero decimal não é considerado primo

		boolean primo = verificaseehprimo(numeroaverificar); //chama o método, passando como parâmetro o número digitado

		if (primo) { //É a mesma coisa de (if primo == true) --> Se o boolean retornar true
			System.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

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

tá ai um codigo mais ou menos, e sem testes hehe

public static boolean verifica_primo(int num)
{
	if (num % 2 == 0)
		return = false;

	int raiz = Math.floor(Math.sqrt(num));
	for (int i = 3; i < raiz; i+=2)
	{
		if (num % i == 0)
			return = false;
	}

	return true;
}

t+ moçada

Criado 25 de março de 2010
Ultima resposta 29 de mar. de 2010
Respostas 12
Participantes 8