Numero primo

19 respostas
M

Pessoal, de que maneira eu poderia fazer um aplicativo que informa se o numero é primo ou não. o pior é que nem lembro o que diabos é um numero primo.

Abraços

MigMax

19 Respostas

D

Numero primo eh o numero que soh tem divisão exata por ele mesmo e por um 1…por exemplo:
3…so pode ser dividio por 3…que da 1, resto 0…e por 1…que da 3, resto 0…7, 11, 13, 17
E a divisão por num primos eh a base da criptografia…
Entaum vejamos como vc pode calcular um numero primo…vc pode fazer um…num mod 1
num mod num e ver se o resto eh zero…mas naum para por ai…pq por exemplo 4 mod 1…0, 4 mod 2…0 tb…

Entaum vc deve fazer um for…e verificar se o resto soh eh zero quando eh divido por ele mesmo e por 1…caso seja entaum este eh um numero primo.

[]´s

M

uaeuha, cara, essa ai do numero primo foi exercicio de prova de uns 2 semestres seguidos aqui no meu curso... os professores tão cada vez menos criativos!!!

o numero primo é aquele q só é divisivel por 1 OU por ele mesmo (resultando inteiro) , ou seja... 7 seria um numero primo..., ai tem um código de exemplo q fiz ligerinho pra ti:

import javax.swing.JOptionPane;

public class Primo {

  public static void main( String[] args )
  {
     int numero = Integer.parseInt(
       JOptionPane.showInputDialog( "Digite o numero" ) );
     boolean primo = false;

     for ( int i = 2; i < numero / 2; i++ )
       if ( ( numero % i ) != 0 )
          primo = false;
       else
          primo = true;

     if ( primo )
       JOptionPane.showMessageDialog( null, numero + "eh primo" );
     else
       JOptionPane.showMessageDialog( null, numero + " nao eh primo" );

     System.exit( 0 );
  }

}

..o esquema do for() é o seguinte, ele começa em 2 pq, .. não tem cabimento fazer % com 1 nos numeros, pq todos são divisiveis por 1.... e ele termina na metade do numero (numero / 2) pq o % de todos os numeros maiores q a metade desse numero ira retornar um resto, então... não se faz necessário calcular.. vai ser só perda de tempo.

[]'s

A

Olha: em java eu não sei até por que nunca fiz… mas os demais participantes do PJ podem dizer se estou errado.

se vc disser que: Ex: se (variavel mod 2 ) == 0 então
resposta = “numero é para”
se não
resposta = “numero é impar”
fim se

Agora, fiquei na dúvida no post acima…

Alguém ai sabe responder…

M

é isso q da no forum do portal, é tão acessado e concorrido pra responderem as perguntas, q demorei pra escrever o post e veio a Diana e postou antes de mim… hehehah :bocao:

A

pô falha nossa… o Matheus matou a pau os Primos…

Gostei dessa aquele ex que mandei é só pra saber se o numero é par ou não…

Valeu … :oops: :oops: :oops:

M

Galera,

Tenho que confessar. eu fico impressionado como existe tanta gente legal nesse País a dentro… incrivel como consigo aprender um pouco com cada comentarios de cada um de voces… espero poder um dia aprender bastante pra poder fazer o mesmo por alguem que esteja iniciando como eu.

Muito obrigado mesmo amigos.

Abraços.

Miguel

W

Caro MigMax, essa é mais uma questão clássica de programação.
Acho que essas cartas que tenho debaixo da manga podem te ajudar :smiley:

// MÉTODO RECEBE INTEIRO E INFORMA SE É PRIMO OU NÃO
    public boolean primo( int n )
    {
        int cont = 0, y = 0, x = 1;
        
        do
        {
            do
            {
                cont = 0;
                x++;
                y=0;
                
                do
                {
                    y++;
                    if ( x % y == 0 )
                        cont++;
                } while( cont < 2 );
            } while ( x != y );
        } while ( x < n );
        
        if ( x == n )
            return true;
        else
            return false;
    }

O método acima recebe o número para a verificação e retorna o resultado do tipo boolean true/false (verdadeiro/falso).
O método abaixo retorna um determinado número primo de acordo com sua posição na relação de números primos.
Ex: se enviar 3 como parametro ele me retorna 5 , pois 5 é o terceiro termo primo.

// METODO PARA ENCONTRAR O n-ESIMO
    //NUMERO PRIMO
    public int primo( int n )
    {
        int cont = 0, y = 0, x = 1, termo = 0;
        
        do
        {
            termo++;
            do
            {
                cont = 0;
                x++;
                y=0;
                
                do
                {
                    y++;
                    if ( x % y == 0 )
                        cont++;
                } while( cont < 2 );
            } while ( x != y );
        } while ( termo != n );
        
        return x;
    }

Guarde bem essas cartas em sua manga pois podem ser uteis um dia!!! :wink:

M

Matheus,

o Andre tem razao, quando implemento seu codigo, por mais que eu coloque qualquer numero primo, ele só me retorna a mensagem dizendo que nao é. vc tinha visto isso?

Wanderson,

Sua dica é muito quente e boa… valeu mesmo irmao.

Miguel

M

“MigMax”:
Galera,

Tenho que confessar. eu fico impressionado como existe tanta gente legal nesse País a dentro… incrivel como consigo aprender um pouco com cada comentarios de cada um de voces… espero poder um dia aprender bastante pra poder fazer o mesmo por alguem que esteja iniciando como eu.

Muito obrigado mesmo amigos.

Abraços.

Miguel

:oops: não fala assim q nós ficamos emcabulados… eahhaehae, e com certeza vc vai achar muita coisa interessante aqui no forum, sempre visando a produtividade e evolução! … e tb além de aprender vai poder ajudar e muito outros futuros iniciantes aqui nesse mesmo forum!

…toda caminhada de mil léguas começa sempre com um primeiro passo.

:pepsi:

F
"matheus":
uaeuha, cara, essa ai do numero primo foi exercicio de prova de uns 2 semestres seguidos aqui no meu curso... os professores tão cada vez menos criativos!!!

o numero primo é aquele q só é divisivel por 1 OU por ele mesmo (resultando inteiro) , ou seja... 7 seria um numero primo..., ai tem um código de exemplo q fiz ligerinho pra ti:

import javax.swing.JOptionPane;

public class Primo {

  public static void main( String[] args )
  {
     int numero = Integer.parseInt(
       JOptionPane.showInputDialog( "Digite o numero" ) );
     boolean primo = false;

     for ( int i = 2; i < numero / 2; i++ )
       if ( ( numero % i ) != 0 )
          primo = false;
       else
          primo = true;

     if ( primo )
       JOptionPane.showMessageDialog( null, numero + "eh primo" );
     else
       JOptionPane.showMessageDialog( null, numero + " nao eh primo" );

     System.exit( 0 );
  }

}

..o esquema do for() é o seguinte, ele começa em 2 pq, .. não tem cabimento fazer % com 1 nos numeros, pq todos são divisiveis por 1.... e ele termina na metade do numero (numero / 2) pq o % de todos os numeros maiores q a metade desse numero ira retornar um resto, então... não se faz necessário calcular.. vai ser só perda de tempo.

[]'s

tem um erro q eu arrumei na boolean...

import javax.swing.JOptionPane; 

public class Primo { 

  public static void main( String[] args ) 
  { 
     int numero = Integer.parseInt( 
       JOptionPane.showInputDialog( "Digite o numero" ) ); 
     boolean primo = true; 

     for ( int i = 2; i < numero / 2; i++ ){
       if ( ( numero % i ) != 0 ){
          primo = false; 
          break;
       }
     }

     if ( primo ) 
       JOptionPane.showMessageDialog( null, numero + "eh primo" ); 
     else 
       JOptionPane.showMessageDialog( null, numero + " nao eh primo" ); 

     System.exit( 0 ); 
  } 

}

:wink:

M

bah… mil desculpas ai gente! postei na correria!
thanks felipe! :slight_smile:

M

Caros Colegas, que agora considero como irmaos.

acho que ja to começando a pegar o jeito da coisa. Olhem só.

O Felipe achou que consertou o erro do Mateus, quando na verdade ele apenas inverteu a maneira de retorno, o que antes só voltava " é primo para todos" agora só volta "nao eh primo" para todos. mas olhando um coidgo aqui, uma dica ali.. acabei descobrindo finalmente qual foi o erro do Mateus.

Olhem apenas esse pequeno trecho.

[code]

for ( int i = 2; i < numero / 2; i++ ){
if ( ( numero % i ) != 0 ){
primo = false;
break;

[\code]

ele teria que está assim, ja que que segundo a logica passada antes por Diana dizia que Numero primo eh o numero que soh tem divisão exata por ele mesmo e por um 1....por exemplo:
3...so pode ser dividio por 3...que da 1, resto 0....e por 1...que da 3, resto 0....7, 11, 13, 17

olhem: quando rodei dessa maneira funcionou .. show de bola pra vcs irmaos..

[code]

for ( int i = 2; i < numero / 2; i++ ){
if ( ( numero % i ) == 0 ){
primo = false;
break;

[\code]

Bye bye and thanks.

F

mals ae heehhehe eh q eu dei uma olhada rapida no codigo do mateus e o q eu vi de cara foi aquele erro q ia se basear apenas no ultimo numero testado… dai pensei q era akilo q tava dando errado… mas tinha mais um erro…
mas jah q vc arrumou o erro ta tudo bem :smiley:

M

é… acho q não foi só eu q tomei um porre a noite passada e vim pro forum heaheahea (estilo jeve :lol: )

:eletrico:

W

Cara, estou quase chorando de tanta emoção. Os números primos promovem a união da humanidade, eu não acredito, eheheh… :cry: :cry: :cry:

F

“matheus”:
é… acho q não foi só eu q tomei um porre a noite passada e vim pro forum heaheahea (estilo jeve :lol: )

:eletrico:

eu n tomei porre… eu n bebo! imagina… eu jah sou meio doidao assim sem beber nada imagina se eu tomar algumas garrafas de cachaca hauahuahuahuahuaahuahua :tosco:

M

Q é isso gente!!! uma cervejinha de vez em quando nao faz mal a niguem heheeh.

MigMax

W

“MigMax”:
… uma cervejinha de vez em quando nao faz mal a niguem heheeh.

:brinde: :bebado: :beer:
Mas UMAS vazem um estrago danado. eheheheheh

M

No Doubt! :lol:

Criado 9 de abril de 2004
Ultima resposta 12 de abr. de 2004
Respostas 19
Participantes 6