Advanced

Modulinio kėlimo laipsniu skaičiuoklė

Greitai ir tiksliai apskaičiuokite (pagrindas^rodiklis) mod m naudodami dvejetainį kėlimą laipsniu kvadratu.
Integer base
Non-negative integer
Positive integer
Result: (base^exponent) mod m
9

Computed with exponentiation by squaring

Pagrindas
7
Rodiklis
256
Modulus
13
Result
9
01.63.34.96.58.19.811.413Result lands within [0, m)
Rezultatai yra apytiksliai ir skirti tik bendrai informacijai, jie nėra profesionalus patarimas — prieš jais remdamiesi visada savarankiškai patikrinkite svarbius rezultatus. Skaityti visą atsakomybės apribojimą.
Greitas atsakymas

Kaip veikia ši skaičiuoklė?

Modulinis kėlimas laipsniu randa (pagrindas^rodiklis) mod m. Užuot skaičiavus milžinišką laipsnį tiesiogiai, naudojamas dvejetainis kėlimas laipsniu kvadratu: kiekviename žingsnyje pagrindas keliamas kvadratu, o rodiklis dalijamas per pusę, padauginant į rezultatą ant nustatytų bitų ir visą laiką redukuojant mod m. Tai veikia per maždaug log2(rodiklis) daugybų ir išlieka tikslu su dideliais sveikaisiais skaičiais.

Formulė
rezultatas = (pagrindas^rodiklis) mod m, kvadratu: kol e > 0, jei e nelyginis rezultatas = rezultatas·b mod m, tada b = b·b mod m, e = e >> 1
How this is calculated

Įveskite tris sveikuosius skaičius: pagrindą b, neneigiamą rodiklį e ir teigiamą modulį m. Skaičiuoklė grąžina b, pakelto laipsniu e, liekaną dalijant iš m. Naivus b^e skaičiavimas pirmiausia persipildytų dideliems rodikliams, todėl šis įrankis naudoja kėlimą laipsniu kvadratu (dar vadinamą dvejetainiu kėlimu laipsniu).

Algoritmas pradeda nuo rezultatas = 1 ir redukuoja pagrindą moduliu m. Tada jis eina per rodiklio bitus nuo mažiausiai iki labiausiai reikšmingo: kai tik einamasis bitas yra 1, jis padaugina einamąjį rezultatą iš einamojo pagrindo (mod m), o kiekviename žingsnyje pakelia pagrindą kvadratu (mod m) ir pastumia rodiklį dešinėn vienu bitu. Kadangi kiekviena tarpinė sandauga redukuojama moduliu m, skaičiai lieka maži, o darbas proporcingas log2(e) daugybų, o ne e jų. Visi veiksmai atliekami su JavaScript BigInt, todėl rezultatai tikslūs nepriklausomai nuo dydžio.

Prielaidos ir kraštutiniai atvejai: rodiklis turi būti sveikasis e >= 0, o modulis turi būti teigiamas sveikasis m > 0 (mod 0 neapibrėžta). Pagrindas gali būti neigiamas; jis pirmiausia normuojamas į diapazoną 0..m-1 naudojant ((b mod m) + m) mod m, todėl grąžinama liekana visada neneigiama. Kai e = 0, rezultatas yra 1 mod m. Kai m = 1, rezultatas visada 0.

Dažnai užduodami klausimai

Dideliems rodikliams b^e yra astronomiškai didelis ir lėtas ar neįmanomas išsaugoti. Redukuojant moduliu m kiekvienoje daugyboje kiekviena reikšmė lieka mažesnė už m, ir viskas baigiama per maždaug log2(e) žingsnių.

Taip. Pagrindas prieš ciklą normuojamas į 0..m-1 naudojant ((b mod m) + m) mod m, todėl neigiamas pagrindas vis tiek duoda teisingą neneigiamą liekaną.

Pagal susitarimą b^0 = 1, todėl rezultatas yra 1 mod m (kuris lygus 0, kai m = 1).

Taip pat žinomas kaip

modulinis kėlimas laipsniu
laipsnis pagal modulį
modpow
a^b mod m
greitas kėlimas laipsniu
modular exponentiation
laipsnis su moduliu

APA

TG we-Calculate Editorial Team. (2026). Modulinio kėlimo laipsniu skaičiuoklė [Online calculator]. TG we-Calculate. https://we-calculate.com/lt/calculator/modular-exponentiation-calculator

Chicago

TG we-Calculate Editorial Team. "Modulinio kėlimo laipsniu skaičiuoklė." TG we-Calculate. 2026. https://we-calculate.com/lt/calculator/modular-exponentiation-calculator.

IEEE

TG we-Calculate Editorial Team, "Modulinio kėlimo laipsniu skaičiuoklė," TG we-Calculate, 2026. [Online]. Available: https://we-calculate.com/lt/calculator/modular-exponentiation-calculator

BibTeX

@misc{wecalculate_modular_exponentiation_calculator, title = {Modulinio kėlimo laipsniu skaičiuoklė}, author = {{TG we-Calculate Editorial Team}}, howpublished = {\url{https://we-calculate.com/lt/calculator/modular-exponentiation-calculator}}, year = {2026}, note = {TG we-Calculate} }

Ar ši skaičiuoklė jums padėjo?