¿Cuál es el más eficiente (en la complejidad del tiempo) algoritmo conocido hoy en día para la Divisibity Decisión Problema: dados dos números enteros, por ejemplo y b , hace una división B ? Que quede claro que lo que pido no es (necesariamente) un algoritmo para el cálculo del resto. Solo quiero saber si a divide b o no. Siendo más específico, mi pregunta es si existe o no algún algoritmo reciente para la Divisibilidad con complejidad de tiempo mejor que O ( m log m log log m ) , donde m es el número de bits de max { a . Además, ¿es Ω ( m log m log log m ) el límite inferior de este problema?
Gracias y saludos, y lo siento si esta es una pregunta tan ingenua.
time-complexity
lower-bounds
nt.number-theory
primes
Leandro Zatesko
fuente
fuente
Respuestas:
fuente
Creo que hay trucos de tipo védico para algunos números que terminan en 3,7, etc. O divisores base 2 ^ n ...
Pero en términos generales, el algoritmo de división más rápido parece ser la norma.
El mejor que conozco sin mirar es el Algoritmo D de los métodos Seminuméricos de Knuth ... Sin embargo, nunca verifiqué su corrección. Se ejecuta en más o menos O (mn-n ^ 2) donde myn son el dividendo y el divisor ... sin factorizar la complejidad de la multiplicación ...
Sin embargo, un límite inferior podría ser extremadamente bajo ya que su pregunta solo se refiere al problema de decisión.
fuente