Numeros primos

10 respostas
V

meu professor pediu pra que fizesse um exercício de npumeros primos.

Uma amiga minha fez o seguinte código:

[/code]
import console.*;
public class Exe3
{
	public static void main(String[]args) 
	{
		int num = Console.readInt ("digite um numero");
		testarPrimo  (num);
	}	
	public static boolean testarPrimo (int num)
	{
		boolean teste = false;
		
		if ( (num == 2)|(num == 3)|(num == 5))
		{
			teste = true;
			System.out.println ("o valor eh primo!! "+ teste);
			return teste;
		}
		
		if (num % 2==0)
		{
			System.out.println ("o valor nao eh primo!! "+ teste);
			return teste;	
		}
		
		if (num %3==0)
		{
			System.out.println ("o valor nao eh primo!! "+ teste);
			return teste;
		}	
		
		if (num %5==0)
		{
			System.out.println ("o valor nao eh primo!! "+ teste);
			return teste;
		}	
		
		else
		{
			teste = true;
			System.out.println ("o valor eh primo!! "+ teste);
			return teste;
		}
	}	
}

Agora, eis minhas dúvidas:

pra que esse % o que significa? tipo num%5 ???

SÓ EXISTE ESTE MEIO DE CALCULAR NUMEROS PRIMOS??
Eu sei que ele eh divisível por 1 e por ele mesmo, não teria um meio menor de fazê-lo?

10 Respostas

A
Olá, bom, a operação q o "%" realiza não passa de uma divisão, mas o resultado que vc obterá, será o resto desta divisão. Então, qdo a sua amiga digita:
if (num % 2==0) 
      { 
         System.out.println ("o valor nao eh primo!! "+ teste); 
         return teste;    
      }
Ela só está testando se o resto da divisão do número num será zero. Agora, eu não entendi o lance do console... é uma classe só para a leitura? Porque se vc quiser realizar a leitura de algo pelo teclado, basta digitar:
import java.io.*
public class Exe3{ 
   public static void main(String[]args)throws IOException{ 

System.out.println("digite um número");
InputStreamReader tec = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader(tec);
//ou usar isso: BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); é a mesma coisa...

String linha = teclado.readLine();
         }
}
E quanto à outra pergunta, se é possível fazê-lo de outra maneira, sim, é possível. Nem precisa usar tipos booleanos. Se tiver dificuldades, poste mais. Espero ter ajudado...
L

O “%” devolve o resto da divisão

public static boolean testarPrimo2( int num ){

boolean teste = false;

if( (num%2 == 0) || ( num%3 == 0) || ( num%5==0 ) ){

teste = true;

System.out.println ("o valor eh primo!! "+ teste);

return teste;

}else

System.out.println ("o valor nao eh primo!! "+ teste);

return teste;

}

Ta bom assim!!!

V

o console foi uma class feita pelo professor pra inserir dados do teclado.
Por exemplo, só digitar

import.console.*;
no começo, e depois pra ler os dados do teclado digita:

int num = Console.readInt("Entre com o dado");

pronto, só assim sem muita coisa pra escrever :wink:

Quanto ao % eu entedi, queria saber se tem outra forma de calcular números primos

B

O algoritmo está errado!

Por exemplo, se você entrar com o 49, ele não é igual a 2 nem 3 nem 5, nem é divisivel por 2, 3 e 5, mas por 7 sim.

Então o resultado seria 49 é primo!
quando na verdade não é, pois é divisível por 7! heehhe

M

A minha reputação esta salva:

static void testarP( int n ){
  boolean flag = true;
  if( n==0 || n==1 || n==2 ){
   System.out.println( n + " é primo" );
   flag = false;
  }else
   for( int c = n-1; c > 1;c-- ){
    if( n%c == 0 ){
     System.out.println( n + " não é primo");
     flag = false;
     break;
    }
   }
   if(flag)
    System.out.println( n + " é primo" );
 }
B

boa marx!
:slight_smile:

S

“marx_payner”:
A minha reputação esta salva:

static void testarP( int n ){ boolean flag = true; if( n==0 || n==1 || n==2 ){ System.out.println( n + " é primo" ); flag = false; }else for( int c = n-1; c > 1;c-- ){ if( n%c == 0 ){ System.out.println( n + " não é primo"); flag = false; break; } } if(flag) System.out.println( n + " é primo" ); }

Você não precisa testar de 2 até n - 1.
Basta testar de 2 até a raíz quadrada de n.

B

isso aÊ!
daqui a pouco vocês chegam no algoritmo de numeros primos mais eficiênte e ganham dinheiro com isso! :stuck_out_tongue:

D

Hum, é isso?

package minhas.classes.java;

import java.io.*;

public class Primos {
    
    public static void testarPrimo (int num) {
        
        int contDiv = 0;
        for ( int i = 1; i <= num ; i++ ) {
            if (num%i == 0){
                contDiv++;
            }
        } //for

        if ( contDiv > 2) {
            System.out.println("O Valor "+num+" não é primo.");

        } else {
            System.out.println("O Valor "+num+" é primo.");
        }       

    } //testarPrimo
    
    public static void main(String[] args)throws IOException {

        System.out.println("Digite um Valor: ");
        BufferedReader leTeclado = new BufferedReader(new InputStreamReader(System.in));

        String valor = leTeclado.readLine(); 
        testarPrimo(Integer.parseInt(valor));

    }
}

Abraço...

T

Sobre o lance do import console*; não seria import corejava.*; ???

Eu estou estudando corejava, e uso a classe console assim…

Criado 17 de março de 2005
Ultima resposta 20 de mar. de 2005
Respostas 10
Participantes 8