numeros primos y factoriales en java

Iniciado por leliCabello, 5 Noviembre 2009, 02:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

leliCabello

porfavor ayudenme....en calcular si un numero es primo o no, y tambien su factorial..estuve avanzandolo pero no me sale como deberia :huh:


package prueba;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;

import javax.swing.*;

public class numeros extends JFrame implements  ActionListener {
public numeros(){
super();
}
String a;
    int numero ;
JPanel panel= new JPanel();
JLabel label1 = new JLabel("Ingresar número ");
JTextField texto = new JTextField(10);
JButton boton = new JButton("Calcular Primos");
JButton boton2 = new JButton("Calcular Factorial");

public void panel(){
panel.add(label1);
panel.add(texto);
panel.add(boton);
panel.add(boton2);
add(panel);
super.setTitle("NUMEROS");
super.setVisible(true);
super.setSize(300, 140);
//panel.setBounds(0, 0, -1, 1);
boton.addActionListener(this);
boton2.addActionListener(this);

a=texto.getText();
numero=Integer.parseInt(a);
}

public static void main(String[] args) {
numeros obj = new numeros ();
obj.panel();

}

public static boolean esPrimo(int numero){
      int contador = 2;
      boolean primo=true;
      while ((primo) && (contador!=numero)){
        if (numero % contador == 0)
          primo = false;
        contador++;
      }
      return primo;
}

public static int factorialrec(int x)
{

    int aux;
    aux=1;
    if (x==0)aux=1;
    else aux=aux*factorialrec(x-1);
    return aux;

}
@Override
public void actionPerformed(ActionEvent e) {
if( e.getSource().equals(boton) ){

JOptionPane.showMessageDialog(null, esPrimo(0));}

   
if( e.getSource().equals(boton2) ){

JOptionPane.showMessageDialog(null, factorialrec(0));}
}

}

Leyer

no veo errores en tus metodos que te falta completar el listerner?

leliCabello

no el listener no es el proble....el problema es que cuando presiono CALCULAR PRIMOS A CUALKIER NUMERO QUE SEA SALE UN RESULTADO DE FALSE Y CUANDO PRESIONO CALCULAR FACTORIAL EL UNICO RESULTADO QUE SALE PARA CUALKIER NUMERO ES 1  :-(...AQUI PUEDES VER LAS IMAGENES
http://img97.imageshack.us/img97/6775/sinttulo1up.jpg

Leyer

bueno fijate lo que haces OptionPane.showMessageDialog(null, esPrimo(0));}

es ovbio que te lanzara false ya que no estas tomando el texto del JtextFiel
tiene que ser asi deberias saber eso como programador no crees.

JOptionPane.showMessageDialog(null, esPrimo(Integer.parseInt(texto.getText())));}

AlbertoBSD

Factorial con BigInteger tanto el método recursivo como el Iterativo.

Código (java) [Seleccionar]

import java.math.BigInteger;

public class Factorial {

public static BigInteger uno = new BigInteger("1");

public static BigInteger recursivo(BigInteger n) {
if(!n.toString().equals("0"))
return n.multiply(recursivo(n.subtract(uno)));
else
return uno;

}

public static BigInteger iterativo(long n) {
BigInteger factorial = uno;
long i = 2;
while(i < n){
factorial = factorial.multiply(new BigInteger(""+i));
i++;
}
return factorial;
}

public static void main(String args[]) {
long i = 1;
while(i < 100000) {
System.out.println(i+ ":\t"+iterativo(i));
i++;
}

}

}




Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

leliCabello

 :-\ ...lo puse tal como me dijiste JOptionPane.showMessageDialog(null, esPrimo(Integer.parseInt(texto.getText())));} .....pero aun sale false

AlbertoBSD

Es obvio que te va a salir false ya que el numero no es primo.

Tu funcion

public static boolean esPrimo


Y al pasar ese dato a cadena, automaticamente tiene uno de 2 valores

true, false

Lo que debes de hacer es lo siguiente evaluar el resultado de la exprecion

if(esPrimo(.....))
mensaje("El numero " +tuVariable+" es Primo");
else
bla bla bla

Saludos



Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW