Modulær invers via Fermat
Divider sikkert under et modulus
Modulær invers via Fermat er en gratis Forberedelse til kodeinterviews-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Forberedelse til kodeinterviews, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Forberedelse til kodeinterviews-kurset indeholder 4 lektioner i alt.
Division fungerer ikke modulo
Addition, subtraktion og multiplikation fungerer fint modulo et tal, men almindelig division gør ikke. Du kan ikke bare dividere og tage resten. ⚠️
Erstat division med multiplikation
Løsningen er den modulære invers: division med x bliver til multiplikation med inversen af x. Så a / b modulo m bliver til a ganget med inversen af b.
Hvad en invers er
Inversen af x er det tal, der giver 1, når det ganges med x modulo et tal. Den spiller rollen som 1/x i almindelig aritmetik.
# x * inv(x) % m == 1Primtal gør det muligt
En invers findes kun, når x ikke har nogen fælles faktor med m. Et primmodul som 1e9+7 garanterer, at alle x bortset fra 0 har en invers.
Fermats lille sætning
Fermats lille sætning siger, at for et primtal p er x opløftet til p minus 1 kongruent med 1, så længe x ikke er et multiplum af p.
# x^(p-1) % p == 1Udled inversen
Isolér én faktor x, så må resten være dens invers. Derfor er inversen af x x opløftet til p minus 2, taget modulo p.
# inv(x) = x^(p-2) % pBeregn den med hurtig potensberegning
Den eksponent er enorm, så brug den hurtige eksponentiering fra den forrige lektion. I Python klarer ét kald til pow hele arbejdet for dig.
inv = pow(x, MOD - 2, MOD)Brug den til division
For at beregne a divideret med b modulo et tal skal du gange a med inversen af b. Resultatet er nøjagtigt den sande kvotient modulo p.
ans = a * pow(b, MOD - 2, MOD) % MODInvertér aldrig nul
Der findes ingen invers til 0, eftersom intet gange nul giver én. Kontrollér, at du ikke dividerer med en værdi, der bliver til nul modulo tallet.
Omkostningen ved én invers
Hver invers med Fermats metode er én hurtig potensberegning, så den tager O(log p) tid. Det er billigt ved nogle få divisioner, men løber op, hvis du udfører millioner.
Tip til mange inverser
Når du skal bruge mange inverser, kan du beregne dem på forhånd med et smart lineært gennemløb i stedet for én pow pr. element. Det får du brug for til nCr lige om lidt.
Hurtigt tjek
Hvilken potens giver den modulære invers modulo et primtal?
Opsummering
Du kan nu dividere modulo et primtal ved at gange med den modulære invers, som findes som x opløftet til p minus 2 med pow. Invertér bare aldrig nul. ✅
Lær Forberedelse til kodeinterviews med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 90
- Lektioner
- 360
Ofte stillede spørgsmål
Er lektionen “Modulær invers via Fermat” gratis?
Ja — hele teksten til “Modulær invers via Fermat” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Forberedelse til kodeinterviews-kurset, skal du opgradere til CoddyKit PRO. Forberedelse til kodeinterviews-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Modulær invers via Fermat”?
Divider sikkert under et modulus Du øver dig i Forberedelse til kodeinterviews med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Forberedelse til kodeinterviews?
Der kræves ingen tidligere erfaring. Forberedelse til kodeinterviews på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Modulær invers via Fermat”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Forberedelse til kodeinterviews-lektion?
Ja. Alle Forberedelse til kodeinterviews-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Arbejd modulo et primtal
- Hurtig modulær eksponentiering
- Modulær invers via Fermat
- nCr med forberegnede fakulteter