Numero primo

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

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

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:

[code]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 );

}

}[/code]

…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

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…

é 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:

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:

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

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:

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

[quote=“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[/quote]

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

[quote=“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:

[code]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 );

}

}[/code]

…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[/quote]

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:

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

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 &lt; 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.

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:

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

:eletrico:

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:

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

:eletrico:[/quote]

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:

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

MigMax

[quote=“MigMax”]… uma cervejinha de vez em quando nao faz mal a niguem heheeh.
[/quote]
:brinde: :bebado: :beer:
Mas UMAS vazem um estrago danado. eheheheheh

No Doubt! :lol: