elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
26 Mayo 2012, 13:10  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Desafíos - Wargames (Moderador: Kasswed)
| | | |-+  Para programadorez y matematicos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Para programadorez y matematicos  (Leído 4,408 veces)
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Para programadorez y matematicos
« en: 20 Septiembre 2005, 08:51 »

Hola, que tal les propongo este reto:

sacar los ultimos 21 digitos de el factorial de: "EL NUMERO PRIMO NUMERO 4500".

para explicarme, el factorial del numero primo numero 3 es:

2*3*4*5=120

Suerte, haber quienes ganan programadores o matematicos..

por cierto cuando lo saquen si son matematicos, expliquen, programadores pongan la fuente.

Saludos!!

***editado

el 4 tambien, perdon.


« Última modificación: 20 Septiembre 2005, 23:33 por Sirdarckcat » En línea

Crack_X
Anti-War
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.320


Peace & Love


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #1 en: 20 Septiembre 2005, 12:04 »

Citar
para explicarme, el factorial del numero primo numero 3 es:

2*3*5=30

No comprendo de donde sacas 2,3 y 5 si sus factores son 3 y 1. Los numeros primos son los que unicamente son divisibles entre si y el uno o no?


En línea

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #2 en: 20 Septiembre 2005, 14:53 »

factorial es multiplicar todos los numeros antes que el "tercer numero primo" que es 5

5!

**editado.

5!=1*2*3*4*5

se incluye el 5 tambien.
« Última modificación: 20 Septiembre 2005, 23:32 por Sirdarckcat » En línea

Nanocity

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Re: Para programadorez y matematicos
« Respuesta #3 en: 20 Septiembre 2005, 17:22 »

Citar
En un rato pongo lo que sea que lo que escribi antes estaba equivocado. Cuando lo tenga posteo algo.

La cosa esque yo habia planteado esto de forma que me salian numeros demasiado grandes para trabajar con ellos pero me he dado cuenta de que cuando vas multiplicando con cojer solo 21 digitos del resultado que te va saliendo vas mas que de sobra. Ahora estoy intentando hacer el codigo en VB aver que sale...

Saludos.
« Última modificación: 20 Septiembre 2005, 20:35 por Nanocity » En línea

Eran nueve, nueve bajo las tres lunas,
bajo la luz del atardecer de otoño.
Mientras el mundo caía, ellos se alzaban
hacia el corazon de la historia
Nanocity

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Re: Para programadorez y matematicos
« Respuesta #4 en: 20 Septiembre 2005, 22:08 »

Pues sigo teniendo el mismo problema porque el resultado de las multiplicaciones cuando llevas muchos numeros primos sobrepasa los digitos que me permite meter VB en una variable aun siendo del tipo long. Si alguien sabe como almacenar numeros de aprox. 24 digitos que avise....

Un saludo.
En línea

Eran nueve, nueve bajo las tres lunas,
bajo la luz del atardecer de otoño.
Mientras el mundo caía, ellos se alzaban
hacia el corazon de la historia
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #5 en: 20 Septiembre 2005, 23:30 »

mmm repito, progrmadores Y MATEMATICOS, piensenle ;)...

repito?? MATEMATICOS jaja, pasa de tu mente de programacion, a mente logico-matematica... una pista.

el ultimo numero sera 0, investiga sobre la conjetura de goldbach.. o de metodos para sacar numero primeros muy grandes..

o puedes intentar en otro lenguaje.. la verdad no me encanta visual.

y quieres algo que guarde algo de mas de 24 digitos?? <UYY MUCHA INFO .. borre lo que decia aqui>

bueno, ahi intentenle
Saludos
« Última modificación: 20 Septiembre 2005, 23:35 por Sirdarckcat » En línea

Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.915



Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #6 en: 21 Septiembre 2005, 01:30 »

La verdad no pude darle al numero exacto, solo sé que el numero primo numero 4500 es 19673; y el maximo factorial que pude sacar eun programa que hice fue el del 170, pero les va a larmar el resultado:

7.25742 E 306

osea 725742 y 301 digitos mas

De todas formas este es el código en DevC++:

Código:
#include<iostream>
using namespace std;
int main()
{
double cont=0,cont2=1;
for(int i=2;;i++)
{
if((i%2!=0 && i%3!=0 && i%5!=0 && i%7!=0)||(i==1||i==2||i==3||i==5||i==7))
{
++cont;
if(cont==4500)
{
cont2=i;
break;
}
}
}
cout<<"El numero primo 4500 es "<<cont2<<endl;
cont=1;
for(int j=1;j<=170;j++)
{
cont*=j;
if(cont<=0)
cout<<"paro en "<<cont2;
else
cont2*=j;
}
cout<<"El factorial de 170 es "<<cont<<"\n\nBy casidiablo"<<endl;
system("pause");
}


Toca buscar otro método, la verdad no creo que haya una variable en programación con tantos digitos; tengan en cuenta que son 307 digitos pero solo para el factorial de 170, y hay que averiguar el de 19673..

Danos una pista si la sabes.... aunque creo que tu no pudiste saber la respuesta por ti solo jejeje

Saludos...
En línea

sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #7 en: 21 Septiembre 2005, 03:58 »

dime, donde puedes almacenar un dato, para incluso, calcular la respuesta en varios dias, o sesiones.. incluso varias maquinas..

ljconiodhamstdiofcoaidufscnafprintasdfasfdfg
rewgfergstringrtjykuhjgnpunterokuchachamo
ivivadkjvhsduitififfffdeifikidefileafikanoalsdkjc
oelihputcsileesestoteaburrestomadodeizhaljaj
anlkdjfalyaseacabaronlaspistaskdljnuihvnduin
osigasnjcwhrggvikbkahhhhknsdavoiirkbyems
dñvkajsdoivchalelkaskdfjaoifjoaefjoaijfobyek


jaja ahi esta unas pistas, muchos caracteres al azar, la pista mas caracteres al azar, mas pistas. tambien hay cosas que no son pistas

por cierto casidiablo, si lo hize solo, pero se me fue el avion en la definicion de factorial, pense que eran de solo los primos pero como >>alguna<< persona me corrigio en mp, ya lo coloque aca tambien..

y el numero primo numero 4500 no es ese jeje..

de hecho 19673 es igual a 103 * 191

si quieres les pongo un link a un programa que hize para sacar el numero primo numero tal.

MANDENME POR MP, privado, la respuesta..
« Última modificación: 21 Septiembre 2005, 04:11 por Sirdarckcat » En línea

Kpax


Desconectado Desconectado

Mensajes: 317



Ver Perfil
Re: Para programadorez y matematicos
« Respuesta #8 en: 21 Septiembre 2005, 04:13 »

Es un problema que vi en concursos de programacion y sino me equivoco la solucion puede darse mediante listas o arreglos.... ahora como los usean a su imaginacion
saludos
En línea

En este mundo una de dos
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #9 en: 21 Septiembre 2005, 04:48 »

Es un problema que vi en concursos de programacion y sino me equivoco la solucion puede darse mediante listas o arreglos.... ahora como los usean a su imaginacion
saludos


mmm de hecho serian muy tontos en un curso de programación, porque un matematico te saca la respuesta en.. unos minutos si no es que sgundos..

a esto tambien fue pista
En línea

jvchino
Solo soy un
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.993


La felicidad no es una meta, es un camino.


Ver Perfil
Re: Para programadorez y matematicos
« Respuesta #10 en: 21 Septiembre 2005, 09:10 »

He dividido el problema en dos partes: una para programadores y otra para matemáticos.

La parte que es para programadores (Aunque no es necesaria para este problema): "Determinar el número primo número 4500", la hice en mi viejo Turbo Pascal y me dio como respuesta 43051.

La parte matemática: "Determinar sus últimos 21 dígitos"
Para no ir lejos tomemos el número 100. ¿En cuantos ceros termina?
100 entre 5 = 20
  20 entre 5 =   4
Total           = 24

Entonces 100! termina en 24 cifras CERO

Por lo tanto el factorial de nuestro número 43051 tiene mucho más de 24 ceros como cifras finales.  ¿Cuántos?... les queda de tarea.



Citar
porque un matematico te saca la respuesta en.. unos minutos si no es que sgundos

No me considero un matemático pero obtuve la respuesta en segundos; ya que sólo me fue necesario hacer la parte matemática (un par de divisiones sencillas).
Luego me dio curiosidad por saber cual era el primo número 4500 y recurrí a mi turbo pascal.

Saludos.

En línea

Si ayudo a una sola persona a tener esperanza, no habré vivido en vano.

No, nada llega tarde, porque todas las cosas
tienen su tiempo justo, como el trigo y las rosas
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #11 en: 21 Septiembre 2005, 17:59 »

jeje, excelente, y si son mas de 24, pero como no me lo mandaste por PRIVADO.. tonces ampliare el juego un poco mas, que numero es el ultimo antes de los ceros, por ejemplo en:

73465784567234757349600000000000000000000000000000

es el 6

saludos¡¡
En línea

Kpax


Desconectado Desconectado

Mensajes: 317



Ver Perfil
Re: Para programadorez y matematicos
« Respuesta #12 en: 22 Septiembre 2005, 03:47 »

Citar
mmm de hecho serian muy tontos en un curso de programación, porque un matematico te saca la respuesta en.. unos minutos si no es que sgundos..

a esto tambien fue pista

Bueno en el concurso la pregunta era:
Sea un numero 0<n<=5000
encuentre el factorial de n.
En línea

En este mundo una de dos
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Para programadorez y matematicos
« Respuesta #13 en: 22 Septiembre 2005, 04:33 »

mm.. si eso suena mas logico. ;D
En línea

- Henry -

Desconectado Desconectado

Mensajes: 63


Ver Perfil
Re: Para programadorez y matematicos
« Respuesta #14 en: 26 Septiembre 2005, 07:50 »

Bueno, creo que tengo la solucion, el numero anterior a los ceros de el factorial de 43051 es 3, y despues de este, hay 10675 ceros a la derecha.

para obtener la solucion hice esto:
Ya que en una variable no se puede almacenar una cifra tan grande, lo que hice fue ingeniarmelas para no tener que usar toda la longitud de el factorial.
Si solo me interesa el anterior a los ceros, pues ese tomare.
parece facil hasta aqui, pero para programarlo es otro rollo, bueno, aqui va una explicacion.

Primero, para entender lo que hice, analicemos esto:

6! = 1x2x3x4x5x6=720, el numero anterior a los ceros es "2",
por lo tanto, hasta aqui, es el que me interesa,
si siguiera multiplicando...
7! = 1x2x3x4x5x6x7=5040, ahora, el numero q nos interesa es el "4"
...pero si siguiera asi, hasta el 43051 no puedo almacenarlo en una variable, a menos que lo hiciera en Disco, pero tardaria mucho tiempo y seria algo complicado hasta aqui creo que no hay nada nuevo, pero si somos observadores...
veremos que el con el 2 que obtuvimos de 5! es posible obtener lo que queremos,, ¿Porque?
6!=720
7!=5040
Tomando solo el 2 de el 6!, podemos obtener el 4 que tiene 7! sin tener que multiplicar 720 * 7, sino, solo seria 2*7
para esto, los digitos a la izquierda ya no nos interesaran.
2*7=14, nos interesa el 4, Magia!!! aqui les va un ejemplo a ver si queda mas claro.

Normalmente --------------------------Datos nuevos
6!= 720                           >> nos interesa soloel 2
7!=5040                          >>ahora sera 2*7= 14, tomamos el 4
8!=40320                        >>ahora seria 4*8= 32, tomamos el 2
9!=362880                       >>Ahora seria 2*9= 18, tomamos el 8
Y asi sucesivamente... Si se fijan en los datos nuevos, ya no nos interesan los datos que se van acumulando a la izquierda y con esto ya tenemos espacio suficiente para guardar los resultados en una variable.

El programa lo hice en Pascal, pero si alguien lo necesita en otro lenguaje, me lo puede pedir.

Código:
{Programa que calcula un numero anterior a los ultimos ceros de
el resultado de un factorial}
Program factorial;
uses crt;
VAR
  long,n,m,cont,conta2:longint;
  x:real;

Begin
  clrscr;
  write('Teclea el numero a analizar: '); {En este caso pondremos 43051}
  readln(n);

  {inicializo contadores}
  m:=1;
  cont:=1;
  conta2:=0;

  while cont<=n do
  begin
    m:=m*cont; {calculando factorial "supuestamente"}
    cont:=cont+1;

    {en las siguientes lineas eliminar‚ todos los ceros que haya a la derecha}
    x:=m mod 10;
    {Mientras el residuo siga siendo Cero, seguire aqui}
    while x = 0 do
    begin
      x:=m mod 10;
      while (m mod 10) = 0 do
      begin
        m:=m div 10;       {Aqu¡ es donde quito todos los ceros de la derecha}
        conta2:=conta2+1;  {y los voy contando...}
      end;
    end;

    {ya eliminados los ceros, tomo el ultimo digito, este sera el nuevo digito...
    ...que se utilizara para multiplicarlo, asi sera solo el ultimo digito ...
    ...el que se multiplicar  n veces }
    if m > 10 then
      m:=m mod 10;
  end;

  { termina el while, termina todo}

  writeln('Numero anterior a los ceros ',m);
  writeln('Despues de este hay ',conta2,' cifras cero');
  write('Henry :)');
  readln;
end.

P.D. Perdon, No me gusta mandar mensajes Privados
En línea
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines