Título: Descomponer en factores primos Publicado por: juanlulete en 7 Agosto 2012, 00:56 am Hola, estoy intentando hacer un programa que descomponga un número en factores primos. Aunque lo conseguí, va muy lento y no lo hace perfecto.
Yo quería que me descompusiera el número de un textbox, le diera un botón y me pusiera la descomposición en un label de este modo: textbox = 60 label = 2^2·3·5 Yo lo hice con un listbox porque no pude hacerlo de otra forma. Este es mi código: Código: Public Class Form1 Por favor, ¿pueden ayudarme a mejorar o mejor cambiar mi código? Título: Re: Descomponer en factores primos Publicado por: Keyen Night en 7 Agosto 2012, 02:46 am Yo publico uno hace tiempo, mejore el código como por un año investigando bastante me obsesiono por un tiempo este tema :xD y en verdad va bastante rápido, claro hay números que por alguna razón matemática que aun no entiendo tardan demasiado, como por ejemplo 444445555511122222 o de ese tipo.
http://foro.elhacker.net/net/aporte_factorizacion_a_maxima_velocidad_actualizado_21102011-t321927.0.html Normalmente siempre se recorren los números de 0 a N para hallar si un número es primo, eso serían N operaciones para cualquier N, si N es 100 mil millones entonces 100 mil millones serán las operaciones necesarias, a eso se debe la demora, sin embargo hay muchos métodos para acortar el tiempo, todos los que pude descubrir están aplicados en ese ejemplo, en tu código aplicas varios, como comenzar desde el 3, porque se sabe que el 2 es primo y el 1 no, avanzar de 2 en 2, porque sabemos que ningún primo es par, además de estos hay otros importantes como por ejemplo ningun número que se presume compuesto tiene más de un factor primo que supere su raíz por el simple hecho de que si F1 es una factor de N y es mayor que la raíz de N, N no puede tener 2 F1 de factores por que superarían a N, en otras palabras 2*F1>N, otros varios están explicados en esa publicación, nada más estos 3 disminuyen la cantidad de operaciones en RaízCuadrada(N-3/2) en vez de N operaciones. Como sea al menos hasta ahora no existe un método para factorizar en primos números grandes de una manera rápida, si alguien lo logra o lo matan o la seguridad informática debe volver a plantearse desde el principio :xD Título: Re: Descomponer en factores primos Publicado por: juanlulete en 7 Agosto 2012, 10:32 am Según lo he visto esta muy bien pero mi programa (Tengo Visual Basic 2010 Express) me indica que no está "regex" determinado.
Derive 6.0 Solo por si quieres mejorar tu programa y también mejorar otras cosas de matemáticas este programa es increíble. Tiene el mejor sistema de factorizar que haya visto nunca, resuelve todo lo que quieras de mates: sumatorios, productorios, ecuaciones, derivadas, integrales, funciones... y no solo eso resuelve con todos los dígitos que te de la gana (un millón de dígitos) Aquí te paso el programa portable: (Copia todo lo que esté entre comillas) "https://rapidshare.com/files/4288239705/Derive 6 - Evaluación.rar" Si lograras descompilar el programa conseguirías muchas formulas y muy buenas. Muchas gracias. Título: Re: Descomponer en factores primos Publicado por: Keyen Night en 7 Agosto 2012, 15:11 pm La tomare mucho en cuenta si la llegase a necesitar, voy a descargarla ahora, Gracias por compartirla ;) hay una página WolframAlpha que también resuelve cualquier cosa, ofrece una API pero es paga :-\
Para usar Regex debes importar System.Text.RegularExpressions. Mi código será siempre más lento, porque está en .Net y porque así como he agregado muchas cosas también faltaran otras, pero es solo practica lo que buscaba era entender la teoría de los problemas y las ventajas de factorizar un número que se supone compuesto en sus primos ;D. Título: Re: Descomponer en factores primos Publicado por: juanlulete en 7 Agosto 2012, 16:42 pm Perdona pero no entiendo como utilizar lo de regex, ¿me lo podrías explicar?
Título: Re: Descomponer en factores primos Publicado por: Keyen Night en 7 Agosto 2012, 21:33 pm Regex es la clase en .Net que controla las expresiones regulares, que son un lenguaje de programación descriptivo para capturar patrones en textos, Es un tema muy extenso, por medio de instrucciones que describen patrones un motor de búsqueda realiza las operaciones necesarias para capturar en el texto que desees si el patrón existe o no.
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular http://www.elguille.info/regexp/indice.aspx http://msdn.microsoft.com/es-es/library/hs600312%28v=vs.80%29.aspx |