Un Problemilla con Un Ejercicio(Java)

Iniciado por YamiAlx, 25 Agosto 2010, 18:18 PM

0 Miembros y 1 Visitante están viendo este tema.

YamiAlx

Bueno estoy generando este para calcular el primo menor en java , que yo ingrese el numero 103 y que el numero primo que me salga en pantalla sea el primo menor de este.

Ej: 10 - Primo Menor : 7

Hasta ahora llevo este codigo, pero no se si tenga que hacer un ciclo for independiente para ir restando el numero a entrada, medio realize una interfaz pequeña, alguna sugerencia ?
Código (java) [Seleccionar]

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame
{
private JLabel total, primo;
private JTextField numero;
private JButton calcular;
//constructor sin argumentos
public Main()
{
crearInterfazdeUsuario();
}
//
public void crearInterfazdeUsuario()
{
Container contentPane = getContentPane();
contentPane.setLayout( null );
primo = new JLabel();
primo.setText("Numero:");
primo.setBounds(05, 25, 91, 21);
contentPane.add(primo);
numero = new JTextField();
numero.setBounds(62, 28, 70, 20);
numero.setHorizontalAlignment(
JTextField.RIGHT);
contentPane.add(numero);
total = new JLabel();
total.setBounds( 45, 115, 500, 21 );
contentPane.add(total);
calcular = new JButton();
calcular.setText( "Calcular" );
calcular.setBounds( 45, 75, 94, 24 );
contentPane.add( calcular );
calcular.addActionListener(
new ActionListener() //
{
public void actionPerformed( ActionEvent event )
{
calcularJButtonActionPerformed( event );
}
}
); //
setTitle( "Primos ?" ); //
setSize( 200, 200 ); //
setVisible( true ); //
} //


private void calcularJButtonActionPerformed( ActionEvent event )
{
try
{
int i = Integer.parseInt(numero.getText());
int c;
String result = "";
for(c = 2; c < i ; c++)
{
if( i % c == 0)
{
   result = i + " No es primo.";
   i--;
   if ( c == i/2)
   {
       result = i + " Primo Menor.";
   }

//break;
}

if(c == i/2)
{
result = i + " Es primo.";
i--;
   if ( c == i/2)
   {
       result = i + " Primo Menor.";
   }

//break;
}
}
total.setText(result);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, "Ingrese un valor numerico", "Valor Numerico No encontrado", JOptionPane.ERROR_MESSAGE);
}
}
public static void main( String[] args )
{
Main application = new Main();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}


Solo deje los de si es primo o no es primo para determinar si si entraba al ciclo, cualquier sugerencia es bienvenida muchas gracias de antemano, apenas estoy comenzando con esto disculpen mi nivel noob ._.

Pd: Espero que no haya cometido algun error ? en lo referente al post por que en el codigo xD si que debe haber errores

Leyer

q tal asi

Código (java) [Seleccionar]
private void calcularJButtonActionPerformed( ActionEvent event ){
try{
int i = Integer.parseInt(numero.getText())-2;
for(int j=i;j>0;j--){
if(!(j%2==0)){
total.setText("Primo Menor: "+j);
break;
}
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Ingrese un valor numerico", "Valor Numerico No encontrado", JOptionPane.ERROR_MESSAGE);
}
}

YamiAlx

 ;D Muchas Gracias , solo le arregle una linea nueva para cuando sea par saque el menor primo de ese numero, aunque es algo medio inventado pero muchas gracias.. dejo el codigo final.
Código (java) [Seleccionar]

private void calcularJButtonActionPerformed( ActionEvent event ){
try{
int i = Integer.parseInt(numero.getText())-2;
for(int j=i;j>0;j--){
if(!(j%2==0)){
total.setText("Primo Menor: "+j);
break;
}
               
                if( j % 2 == 0)
                {
                    j++;
                    total.setText("Primo Menor del Par: "+ j);
break;
                }
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Ingrese un valor numerico", "Valor Numerico No encontrado", JOptionPane.ERROR_MESSAGE);
}


Intentare ser mas activo xD