não esta dando certo o meu programa para dizer se um número é primo ou não
[code]
//3.7 Dizer se um número é primo
public class Primo
{
public Primo(){
}
public void executar(int num){
if((num % 1) && (num % num)){
System.out.println("É primo: "+num);
}
else{
System.out.println("O número "+num+" não é primo");
}
}
}[/code]
ta dando erro de operação
diz assim “operator && cannot be applied to int, int”
Não entendi sua expressão. Qual é a sua definição de primo?
se o número que eu entrar num for if((num % 1) && (num % num))
ai eu coloquei && para que só entre no if caso as duas situações sejam satisfeitas
a % b retorna o resto da divisão de a por b. Por exemplo, 10 % 3 retorna 1.
Para saber se a é divisível por b, você tem de usar (a % b == 0).
OK?
Além disso você tem um problema de lógica. Do jeito que está escrito aí, qualquer número vai passar - experimente com o número 10, que você e eu sabemos que não é primo, já que é 2 vezes 5.
beleza
mais tem um problema
todos os numeros que eu digito da primo agora
A definição de primo é “um número que é divisível APENAS por 1 e por si mesmo.”
Então você precisa testar todos os números, de 2 até N - 1, para ver se algum deles divide o número N. Se algum deles dividir, então o número não é primo.
Todos os números são divisíveis por si e por 1. (exceto 0, er)
Os primos só dividem por isso, e os compostos tem além destes, outros divisores, sacou?
É só testar os divisores.
metodo ehPrimo (numero) {
numero maior que 0 ?
não, retorna FALSO ou gera exceção de valor inválido
sim,
temp = numero -1
loop: enquanto temp maior que 1
numero dividido por temp tem resto igual a zero ?
sim, retorna FALSO ou gera exceção de valor não é primo
nao,
temp igual a temp -1
fim do loop
retorna VERDADEIRO
}
Tem também o Crivo de Eratóstenes