Dúvida num programa

4 respostas
A

Tenho um programa para fazer que é:


Faça um programa que solicite um numero inteiro ao usuário então imprima todos os
numeros primos até aquele inteiro.Por exemplo, se o usuario inserir 20, o programa deve
imprimir 2 3 5 7 11 13 17 19 .

Só que não consigo fazer, com que ele imprima os numeros primos até aquele que o usuário digitou!!!

import javax.swing.*;
public class Prova {
        
     
    public static void main(String[] args) {
        int numero,primos=0,pos;
        
        numero=Integer.parseInt(JOptionPane.showInputDialog("digite o numero"));
        
        for (pos=0;pos<numero;pos++)
        {
        	if ((numero%1==0)&&(numero%numero==0))
        		primos++;
        }
        System.out.println ("primos sao: "+primos);
    }
}

4 Respostas

J

import javax.swing.*;
public class Prova {

public static void main(String[] args) {   
    int numero,primos=0,pos;   
       
    numero=Integer.parseInt(JOptionPane.showInputDialog("digite o numero"));   
       
    for (pos=0;pos<numero;pos++)   
    {   
        if ((numero%1==0)&&(numero%numero==0))   
            primos++;   
    }   
    System.out.println ("primos sao: "+primos);   
}
}

import javax.swing.*;

public class Prova {
public static void main(String[] args) {
    int numero,primos=0,pos;
    
    numero=Integer.parseInt(JOptionPane.showInputDialog("digite o numero"));
    
    for (pos=0;pos<numero;pos++)
    {
    	if ((numero%1==0)&&(numero%numero==0)) 
               // muda aki
               // primos++;
               System.out.println ("primos sao: "+primos);
    }
}

}

J

import javax.swing.*;
public class Prova {

public static void main(String[] args) {   
    int numero,primos=0,pos;   
       
    numero=Integer.parseInt(JOptionPane.showInputDialog("digite o numero"));   
       
    for (pos=0;pos<numero;pos++)   
    {   
        if ((numero%1==0)&&(numero%numero==0))   
            primos++;   
    }   
    System.out.println ("primos sao: "+primos);   
}
}

import javax.swing.*;

public class Prova {
public static void main(String[] args) {
    int numero,primos=0,pos;
    
    numero=Integer.parseInt(JOptionPane.showInputDialog("digite o numero"));
    
    for (pos=0;pos<numero;pos++)
    {
    	if ((numero%1==0)&&(numero%numero==0))
    	   //primos++;
              // muda para ka
               System.out.print (numero + ",");
    }
}

}

J

import javax.swing.*;

public class Prova {

public static void main(String[] args) { 
          int numero,primos=0,pos; 

          do  (
               numero=Integer.parseInt(JOptionPane.showInputDialog("digite o numero")); 

               for (pos=0;pos<=numero;pos++)  { 
                    if (numero%pos==0) 
                      primos++; 
               } 
               if (primos<3)
                  System.out.println (numero); 

               String resposta = JOptionPane.showInputDialog("Continua (S/N) ? ");

          } while (resposta != "N" || resposta != "n");   
 }

}

rmendes08

O seu primeiro erro foi colocar o println() fora do laço. Assim você vai imprimir apenas o último número. Bem, a sua lógica está errada também. Na verdade, TODOS os números são divisíveis por 1 e por si mesmos. Assim, se você apenas incluir o println() dentro do laço você vai imprimir todos os números de 1 até o número digitado. Então, você precisa mudar o seu critério para testar se um número é primo ou não. Basta aplicar a definição de número primo: é um número divisível APENAS por 1 e por ele mesmo. Assim, se houver algum divisor entre 1 e N o número não é primo

Bem, algoritmos para encontrar números primos são bem conhecidos, uma vasculhada no Google resolve a vida.

Criado 17 de novembro de 2008
Ultima resposta 17 de nov. de 2008
Respostas 4
Participantes 3