não esta dando certo o meu programa para dizer se um número é primo ou não
//3.7 Dizer se um número é primopublicclassPrimo{publicPrimo(){}publicvoidexecutar(intnum){if((num%1)&&(num%num)){System.out.println("É primo: "+num);}else{System.out.println("O número "+num+" não é primo");}}}
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?
Douglas_Magno
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
B
bezier_curve
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?
B
bezier_curve
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.
Douglas_Magno
beleza
mais tem um problema
todos os numeros que eu digito da primo agora
B
bezier_curve
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.
Lucas182
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.
WellingtonRamos
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
}