Algoritmul Burnickel-Ziegler ( germană: Burnikel-Ziegler-Verfahren ) este un algoritm pentru împărțirea numerelor întregi mari , descris de Christoph Burnickel și Joachim Ziegler în 1998 [1] , care vă permite să calculați eficient atât câtul cât și restul diviziunii .
Miezul metodei îl reprezintă algoritmii și , care împart numerele cu lungimi , , , . Algoritmii se apelează reciproc recursiv, fiecare pas reducând lungimea numărătorului cu 1/4 și respectiv 1/3 [1] . Algoritmul , printre altele, efectuează înmulțirea, astfel încât performanța acestuia poate fi mărită folosind metode rapide de înmulțire .
Dacă în calcule se utilizează un algoritm, a cărui complexitate de calcul este , de exemplu, algoritmul Karatsuba sau Toom-Cook , atunci complexitatea algoritmului Burnickel-Ziegler va fi, de asemenea, . Dacă calculul folosește metoda de înmulțire Schönhage-Strassen cu , atunci complexitatea diviziunii va fi [1] :11
În practică, algoritmul este mai rapid decât diviziunea lungă și algoritmul lui Barrett pentru numere al căror număr de zecimale se află între aproximativ 250 și 1,5 milioane [1] :22 .
Folosit în multe biblioteci software standard, cum ar fi Java versiunea 8 [2] și GMP [3] .
Algoritmi teoretici numerelor | |
---|---|
Teste de simplitate | |
Găsirea numerelor prime | |
Factorizarea | |
Logaritm discret | |
Găsirea GCD | |
Modul de aritmetică | |
Înmulțirea și împărțirea numerelor | |
Calcularea rădăcinii pătrate |