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));}
}
}
no veo errores en tus metodos que te falta completar el listerner?
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
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())));}
Factorial con BigInteger tanto el método recursivo como el Iterativo.
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
:-\ ...lo puse tal como me dijiste JOptionPane.showMessageDialog(null, esPrimo(Integer.parseInt(texto.getText())));} .....pero aun sale false
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
;) graciass...