Foro de elhacker.net

Programación => Java => Mensaje iniciado por: leliCabello en 5 Noviembre 2009, 02:13 am



Título: numeros primos y factoriales en java
Publicado por: leliCabello en 5 Noviembre 2009, 02:13 am
porfavor ayudenme....en calcular si un numero es primo o no, y tambien su factorial..estuve avanzandolo pero no me sale como deberia :huh:

Código:
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));}
}

}


Título: Re: numeros primos y factoriales en java
Publicado por: Leyer en 5 Noviembre 2009, 02:37 am
no veo errores en tus metodos que te falta completar el listerner?


Título: Re: numeros primos y factoriales en java
Publicado por: leliCabello en 5 Noviembre 2009, 03:21 am
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


Título: Re: numeros primos y factoriales en java
Publicado por: Leyer en 5 Noviembre 2009, 04:51 am
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())));}


Título: Re: numeros primos y factoriales en java
Publicado por: AlbertoBSD en 5 Noviembre 2009, 05:26 am
Factorial con BigInteger tanto el método recursivo como el Iterativo.

Código
  1. import java.math.BigInteger;
  2.  
  3. public class Factorial {
  4.  
  5. public static BigInteger uno = new BigInteger("1");
  6.  
  7. public static BigInteger recursivo(BigInteger n) {
  8. if(!n.toString().equals("0"))
  9. return n.multiply(recursivo(n.subtract(uno)));
  10. else
  11. return uno;
  12.  
  13. }
  14.  
  15. public static BigInteger iterativo(long n) {
  16. BigInteger factorial = uno;
  17. long i = 2;
  18. while(i < n){
  19. factorial = factorial.multiply(new BigInteger(""+i));
  20. i++;
  21. }
  22. return factorial;
  23. }
  24.  
  25. public static void main(String args[]) {
  26. long i = 1;
  27. while(i < 100000) {
  28. System.out.println(i+ ":\t"+iterativo(i));
  29. i++;
  30. }
  31.  
  32. }
  33.  
  34. }
  35.  
  36.  


Saludos


Título: Re: numeros primos y factoriales en java
Publicado por: leliCabello en 5 Noviembre 2009, 05:28 am
 :-\ ...lo puse tal como me dijiste JOptionPane.showMessageDialog(null, esPrimo(Integer.parseInt(texto.getText())));} .....pero aun sale false


Título: Re: numeros primos y factoriales en java
Publicado por: AlbertoBSD en 5 Noviembre 2009, 05:33 am
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





Título: Re: numeros primos y factoriales en java
Publicado por: leliCabello en 5 Noviembre 2009, 22:33 pm
 ;) graciass...