Burnickel-Ziegler-algoritmen ( tyska: Burnikel-Ziegler-Verfahren ) är en algoritm för att dividera stora heltal , beskrev av Christoph Burnickel och Joachim Ziegler 1998 [1] , som gör att du effektivt kan beräkna både kvoten och resten av divisionen .
Kärnan i metoden är algoritmer och , som delar tal med längder , , , . Algoritmerna anropar varandra rekursivt, där varje steg minskar längden på täljaren med 1/4 respektive 1/3 [1] . Algoritmen utför bland annat multiplikation , så dess prestanda kan ökas med snabba multiplikationsmetoder .
Om en algoritm används i beräkningarna, vars beräkningskomplexitet är till exempel Karatsuba- eller Toom-Cook- algoritmen, så kommer komplexiteten för Burnickel-Ziegler-algoritmen också att vara . Om beräkningen använder Schönhage-Strassen multiplikationsmetoden med , så blir divisionskomplexiteten [1] :11
I praktiken är algoritmen snabbare än långdivision och Barretts algoritm för tal vars antal decimaler ligger mellan cirka 250 och 1,5 miljoner [1] :22 .
Används i många standardprogrambibliotek, som Java version 8 [2] och GMP [3] .
Talteoretiska algoritmer | |
---|---|
Enkelhetstest | |
Hitta primtal | |
Faktorisering | |
Diskret logaritm | |
Hitta GCD | |
Modulo aritmetik | |
Multiplikation och division av tal | |
Beräkna kvadratroten |