Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda Primos Y Binarios

Estas en el tema de Ayuda Primos Y Binarios en el foro de Java en Foros del Web. Por favor que alguien me ayude soy nuevo en esto del java y necesito ayuda. Tengo que hacer esto, y no puedo, llevo cinco dias ...
  #1 (permalink)  
Antiguo 26/09/2007, 13:30
 
Fecha de Ingreso: septiembre-2007
Mensajes: 3
Antigüedad: 16 años, 7 meses
Puntos: 0
Ayuda Primos Y Binarios

Por favor que alguien me ayude soy nuevo en esto del java y necesito ayuda. Tengo que hacer esto, y no puedo, llevo cinco dias y solo he logrado sacar los primos, pero no puedo tomarlos uno a uno para operar con ellos:

Determinar las suma de los n primeros términos de la siguiente serie:

S=+1!/1-1!/2-2!/3+2!/5+3!/7+3!/11-3!/13-2!/17-.......

El denominador está constituido por los números primos y el numerador por el factorial de la suma de los dígitos que conforman el denominador expresado en binario así:

1(10)=1(2) => numerador = 1

2(10)=10(2) => numerador = 1+0=1

3(10)=11(2) => numerador = 1+1=2

5(10)=101(2) => numerador = 1+0+1=2



17(10)=10001(2) => numerador = 1+0+0+0+1=2

(Los números en paréntesisi son las bases)

Además el signo cambia tambien: +, - -, + + +, - - - -, + + + + +,.....


tengo esto:


nTxt = JOptionPane.showInputDialog("Ingrese el Nº de terminos: ");
n = Integer.parseInt(nTxt);

for(int i=1; i<=n; i++) {
esPrimo = true;
for(int j=2; j if(i%j==0)
esPrimo = false;
}
if( esPrimo )
JOptionPane.showMessageDialog(null, + i); // Imprime uno a uno los números primos


Ademas, con esto otro saco los binarios de cualquier número, pero no puedo hacer que tome los primos uno a uno del codigo anterior y lo cambie a binario, no se como unirlos.


for (int i=n; i>0; k++){
b=i%2;
i=i/2;
JOptionPane.showMessageDialog(null, +b);
}

si lo meto en el for mayor, me saca bien el 1 y el 2 pero a partir del 3 adios, se daña todo.

AYUDARME POR FAVOR. GRACIAS DE ANTEMANO.
  #2 (permalink)  
Antiguo 01/10/2007, 01:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: Ayuda Primos Y Binarios

Te dejo unas imagenes como me quedo.

La funcion buscar primos se puede optimizar, como por ejemplo no buscar en numeros pares o que terminen en 5, etc. para numeros pequeños no importa
pero si es para numeros grandes tendrias que arreglarlo.

Saludos.




Código:
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

/*
 * QuePa.java
 *
 * Created on 30-09-2007, 10:52:12 PM
 *
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Picaporte
 */
public class QuePa {

    public static void main(String[] args) {

        String nTxt;
        String signoString = "";
        String resultadoPantalla = "";
        int n;


        double resultado = 0;
        long contador;
        long contadorOriginal;
        int multiplicadorSigno = -1;
        double sumaTotal = 0;
        double numerador;
        double denominador;

        contador = 0;
        contadorOriginal = 0;

        nTxt = JOptionPane.showInputDialog("Ingrese el Nº de terminos: ");
        n = Integer.parseInt(nTxt);


        DecimalFormat df = new DecimalFormat();
        df.setMaximumFractionDigits(0);

        for (int a = 1; a <= n; a++) {
            if (esPrimo(a)) {
                if (contador == 0) {
                    contadorOriginal++;
                    contador = contadorOriginal;
                    multiplicadorSigno = multiplicadorSigno * -1;
                }

                numerador = factorial(sumaBinario(a)) * multiplicadorSigno;
                denominador = a;
                resultado = (numerador / denominador);
                sumaTotal = sumaTotal + resultado;
                contador--;
                if (numerador > 0) {
                    signoString = "+";
                } else {
                    signoString = "";
                }
                //desabilitalo si es necesario
                resultadoPantalla = resultadoPantalla + (signoString + df.format(numerador) + "/" + df.format(denominador));
            }
        }

        resultadoPantalla = resultadoPantalla + "=" + sumaTotal;
        JOptionPane.showMessageDialog(null, resultadoPantalla);
    }

    public static boolean esPrimo(long numero) {


        if (numero == 1) {
            return true;
        } else {
            for (long j = 2; j < numero; j++) {

                if ((numero % j) == 0) {
                    return false;
                }
            }
        }

        return true;
    }

    public static long factorial(long numero) {

        if (numero <= 1) {
            return 1;
        } else {
            return numero * factorial(numero - 1);
        }
    }

    public static long sumaBinario(long numero) {


        long digito;
        long iSuma = 0;
        long iExponente;
        long resultado = 0;


        iSuma = 0;
        iExponente = 1;

        while (numero > 0) {


            digito = numero % 2;
            numero = numero / 2;
            iSuma = iSuma + digito * iExponente;
            iExponente = iExponente * 10;
            resultado = digito + resultado;
        }
        return resultado;
    }
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.