elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad (Moderador: r32)
| | |-+  Demultiplicación de números o como conseguir los dos primos q componen un num
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Demultiplicación de números o como conseguir los dos primos q componen un num  (Leído 2,470 veces)
erChucky

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Demultiplicación de números o como conseguir los dos primos q componen un num
« en: 14 Octubre 2013, 11:26 am »

public class Desen {
   
   public static final int[][] TERMINA1 = {{1,1},{3,7},{9,9},{-1,-1}};
   public static final int[][] TERMINA3 = {{1,3},{7,9},{-1,-1}};
   public static final int[][] TERMINA7 = {{1,7},{3,9},{-1,-1}};
   public static final int[][] TERMINA9 = {{1,9},{3,3},{7,7},{-1,-1}};
   
   public static void main(String[] args) {
      principal();
   }
   
   public static void principal() {
      long n=8441081851627;
         
      String result=recursiva(n, 0, 0, 0);
         
      
      System.out.println(result==null? n + " es primo": n+ " es mulp de " + result);
      }
   

   public static String recursiva(long num, int pos, long xt, long yt) {
      
      String str=null;
      long numact=num-(xt*yt);
         
      int[][]res=(pos==0) ? primera(numpos(numact,pos)) :comprueba(numpos(numact,pos),numpos(xt,0),numpos(yt,0));      
      

         for (int i=0; i<10 && res
  • >-1; i++) {
         
            long x=xt+(long)(Math.pow(10, pos)*res
  • );
            long y=yt+(long)(Math.pow(10, pos)*res[1]);
            long z=x*y;
            if (z < num && z > 0 && numpos(num-z, pos)==0)
               str=recursiva(num, pos + 1, x, y);
            else if (z==num && x>1 && y> 1)
                  return x+" y "+y;
            if (str != null) return str;
         
         }
      return null;
   }
   
   public static int[][] primera (int x){
      switch(x) {
         case 1: return TERMINA1;
         case 3: return TERMINA3;
         case 7: return TERMINA7;
         case 9: return TERMINA9;
          };
      return TERMINA1;
      }
   
   public static int numpos (long num, int pos) {
      String sn=(num+"");
      return Integer.parseInt(sn.substring(sn.length()-pos-1, sn.length()-pos));
   }

   public static int[][] comprueba (int num, int x, int y) {
      int[][] resul=new int[10][2];
      int m=0,n=0;
      for (int i=0; i<10; i++)
         for (int j=0; j<10; j++) {
            if((x==-1 ? i*j : i*y+j*x)%10==num) {
               boolean encontrado=false;
               if (x==-1) {                  
                  for (int k=0; k<m && !encontrado; k++)
                     encontrado= (resul[k][0]==j && resul[k][1]==i);                  
               }
               
               if (!encontrado) {
                  resul[m][n++]=i;
                   resul[m++][n--]=j;
                }
            }
         }
      if(m<resul.length){
         resul[m][0]=resul[m][1]=-1;
      }
      return resul;
   }
}


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Demultiplicación de números o como conseguir los dos primos q componen un num
« Respuesta #1 en: 14 Octubre 2013, 22:10 pm »

Demultiplicación -> Factorización o descomposición en números primos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Scripting
katas 2 9,533 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
NUMEROS PRIMOS
Programación C/C++
alviera 4 5,690 Último mensaje 7 Diciembre 2010, 06:39 am
por N0body
6.000 soldados componen el ejercito cibernético norcoreano
Noticias
wolfbcn 6 2,659 Último mensaje 8 Enero 2015, 16:54 pm
por Pablo Videla
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines