pessoal mais uma dúvida, rsrs
como faço pra fazer uma função que retorne um valor booleano (true/false) que vai indicar se um número X digitado é primo ou não?
como faço pra verificar se um número é primo? não faço nem idéia de como fazer um if ou algo do tipo pra descobrir se é primo ou não… alguém ai pode ajudar?
na verdade minha dúvida é como fazer pra verificar se o número é primo ou não, a função eu sei fazer
bom…vamos aos conceitos…
um número é primo se ele for divisível apenas por 1 e por ele mesmo.
para você saber se um número é divisível por outro, você precisa usar o operador % que é o resto da divisão e verificar se o resultado é 0, por exemplo:
if (5 % 2 == 0){
System.out.println("5 é divisivel por 2");
}else{
System.out.println("5 NÃO é divisivel por 2");
}
certo, agora para saber se um número é primo, você precisa fazer um loop verificando se existe algum outro número que possa dividir este número… algumas dicas podem facilitar:
seu loop não precisa começar em 1, um sempre irá dividir qualquer número, pode começar em 2;
seu loop só precisa ir até a metade do valor do item arredondado para baixo, se passou desse valor então nenhum outro na sequencia irá dividir o número.
se o número for 1 ou 2 sempre será primo, senão vá para o loop.
então resumindo, você precisa fazer um loop de 2 até a metade do valor digitado fazendo um if como o de cima, caso entre no if é por que é primo, basta exibir a mensagem ai que é primo e dar um break, saindo do loop ja que você ja tem sua resposta.
bom, acho que ja expliquei tudo o que você precisa… não sei nem se deveria ter respondido…
[quote=maior_abandonado]bom…vamos aos conceitos…
um número é primo se ele for divisível apenas por 1 e por ele mesmo.
para você saber se um número é divisível por outro, você precisa usar o operador % que é o resto da divisão e verificar se o resultado é 0, por exemplo:
if (5 % 2 == 0){
System.out.println("5 é divisivel por 2");
}else{
System.out.println("5 NÃO é divisivel por 2");
}
certo, agora para saber se um número é primo, você precisa fazer um loop verificando se existe algum outro número que possa dividir este número… algumas dicas podem facilitar:
seu loop não precisa começar em 1, um sempre irá dividir qualquer número, pode começar em 2;
seu loop só precisa ir até a metade do valor do item arredondado para baixo, se passou desse valor então nenhum outro na sequencia irá dividir o número.
se o número for 1 ou 2 sempre será primo, senão vá para o loop.
então resumindo, você precisa fazer um loop de 2 até a metade do valor digitado fazendo um if como o de cima, caso entre no if é por que é primo, basta exibir a mensagem ai que é primo e dar um break, saindo do loop ja que você ja tem sua resposta.
bom, acho que ja expliquei tudo o que você precisa… não sei nem se deveria ter respondido…
[/quote]
valeu, é que eu não tava conseguindo ter essa lógica de começar em 2 e verificar até a metade se ele é divisível ou não … mas valeu ai vou pensar aqui agora
fiz aqui e deu erro … não to achando o que eu fiz de errado aqui
[code]package rotinas_16_8;
/*Faça um programa que receba pelo teclado um número N inteiro (maior que 0),
- e o envie para uma função, que retornará um valor booleano (true/false)
- que indicará se o número digitado é um número primo ou não. Exibir mensagem apropriada.
*/
import java.util.Scanner;
public class Exercicio2 {
public static void main(String[] args) {
int N;
Scanner tec = new Scanner (System.in);
System.out.print("Digite um número maior do que zero: ");
N = tec.nextInt();
if (N <= 0){
do {
System.out.print("Digite um número válido: ");
N = tec.nextInt();
} while (N <= 0);
}
if ((N = 1) || (N = 2)){
System.out.print("O número é primo");
}
if (primo = true){
System.out.print("O número é primo");
}
if (primo = false){
System.out.print("O número NÃO é primo");
}
}
public static boolean primo (int x){
int y, aux;
aux = (int) (x/2);
for (y=2;y=aux;y++){
if (x % y == 0){
return true;
break;
}
}
return false;
}
}[/code]
if ((N = 1) || (N = 2)){
Não é “==” não?
[quote=entanglement]
if ((N = 1) || (N = 2)){
Não é “==” não?
[/quote]
quando coloco “==” ele dá erro … mas o problema maior nem tá ai, é na função que dá um erro e não sei o que é
== serve para comparar
= serve apenas para copiar (atribuir), não para comparar
[quote=entanglement]== serve para comparar
= serve apenas para copiar (atribuir), não para comparar[/quote]
mas cara eu coloco == ele dá um erro … mas o problema nem tá ai, tá na função pra ver se o número é primo ou não, não to conseguindo fazer pra descobrir se é primo
Isto também está errado, embora o compilador não reclame:
if (primo = true){
tem de ser:
if (primo == true){
Vale lembrar que 1 não é primo, afinal considera número primo aquele que possui apenas 2 divisores, seria
ele mesmo e o 1.
import java.util.Scanner;
public class Exercicio2 {
public static void main(String[] args) {
int N;
int cont = 0;
Scanner tec = new Scanner (System.in);
System.out.print("Digite um número maior do que zero: ");
do {
System.out.print("Digite um número válido: ");
N = tec.nextInt();
} while (N <= 0);
for(int i = 1 ; i <=N ; i++){
cont++;
}
if(cont==2){
System.out.println("O numero " + String.valueOf(N) + " eh primo");
}
}
}
Se eu estiver errado me falem ! Abraços