grs666 0 Denunciar post Postado Fevereiro 5, 2010 Olá pessoal, gostaria que tirassem uma duvida minha... estou querendo fazer o seguinte: pedir pro usuario digitar um numero inteiro e pedir pro programa verificar se esse numero digitado é primo ou não. Quando compilo o programa e digito um numero inteiro, sempre da a seguinte mensagem: O numero "n" nao é primo. O código esta ai abaixo: valeu! import java.util.Scanner; public class Exercicio1 { public static void main(String args[]){ Scanner sc=new Scanner(System.in); int n,n2,i; int resto=0; System.out.print("digite o numero:"); n=sc.nextInt(); n2=n-1; for(i=n2;i<=2;i--) resto=n%i; if(resto!=0) System.out.print("O numero "+n+" e primo"); if(resto==0) System.out.printf("o numero "+n+" nao e primo"); } } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 5, 2010 Primeira coisa a comparação do for está errada. Mude de: i<=2 Para i>=2 Faça enquanto i maior ou igual a 2. Do jeito que está fazendo o resultado de resto é sempre a divisão de n/2 Não está correto! Assim todos os pares não são primos o os ímpares são. Não testei, mas veja se isso resolve: for(i=n2;i>=2;i--){ resto=n%i; if(resto==0) break; } Compartilhar este post Link para o post Compartilhar em outros sites
grs666 0 Denunciar post Postado Fevereiro 5, 2010 É, realmente funcionou. Obrigado Kandrade por resolver meu problema. Foi uma falta de atenção minha isso que você postou. acontece... valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 5, 2010 Opa, sem problemas. Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
grs666 0 Denunciar post Postado Fevereiro 5, 2010 Opa, outro detalhe... esqueci de mencionar que quando o usuario entra com os numeros 2 e 1, na tela é mostrado que os mesmos não são primos... tentei fazer de um geito aqui mais mostra duas vezes... por exemplo, com o numero 2: o numero 2 é primo.o numero 2 nao e primo. Uma luz, por favor... valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 5, 2010 Tem vários jeitos de fazer isso. Um deles é fazer if n = 1 ou n = 2 muda resto para 1 por exemplo, mas nesse caso eu faria assim: if (n<=0) primo = false; for(i=n2;i>=2;i--){ resto=n%i; if(resto==0){ primo = false; // crie essa variavel como boolean e inicie-a com true break; } } if(primo){ System.out.print("O numero "+n+" e primo"); } else{ System.out.printf("o numero "+n+" nao e primo"); } Compartilhar este post Link para o post Compartilhar em outros sites
grs666 0 Denunciar post Postado Fevereiro 5, 2010 Opa, esta funcionando. esta certinho... Obrigado de novo! :) Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Fevereiro 5, 2010 Foi nada :) Compartilhar este post Link para o post Compartilhar em outros sites