algún algoritmo para decimales periodicos

Iniciado por engel lex, 27 Septiembre 2012, 17:01 PM

0 Miembros y 1 Visitante están viendo este tema.

engel lex

Por ahora el lenguaje a usar tentativamente es java... por eso pregunto en programación general a ver si me pueden ayudar... podría usar php también por cosas de ver si me funciona y programarlo rápido (también por lo lento me ayudaría a calcular tiempo)

necesito que al realizar una división poder:

notar el decimal es periódico
  en caso afirmativo detectar el periodo y anteperiodo

hago un ejemplo

124325503/9999900
eso genera algo como esto  12.43267462 siendo el pedazo subrayado el periodo


pienso...

mi primer problema es descartar si el numero es solo un decimal exacto muy largo o un irracional...

mi segundo, si es un periódico, conseguir el periodo

lo que no sabría, es buscar el patrón sino casi a fuerza bruta

¿quien me hecha una manito aquí a ver si puedo avanzar?

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jvchino

Primero lo primero: Verificar si la división genera un decimal exacto o periódico.
- Simplificar la fracción hasta convertirla en irreducible.
- Si el divisor resulta múltiplo solo de de 2 y/o de 5 es un decimal exacto.
- De lo contrario será un decimal periódico.

Superado el primer paso, puedes continuar con lo que sigue: Determinar el periodo.

Saludos.
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

engel lex

no, disculpa que creo que no quedó claro un hecho... el asunto es que el proceso es de "buscar patrones" ya que no conozco la división...

tengo es el resultado... y básicamente es convertirlo a su forma racional...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MCKSys Argentina

Suponiendo que expreses los decimales como un string, se me ocurre que podrias implementar un compresor LZW y una vez terminada la compresion, analizar la tabla de códigos y el output generado.

De esta forma, si existe repeticion en el stream de decimales, va a estar reflejado en la tabla (se va a comprimir).

Incluso podrias determinar el periodo excato sin mucho esfuerzo...

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


engel lex

me parece excelente... me pondré a pie con un compresor y a ver como es la salida
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.