Inverso modulare tramite Fermat
Dividere in sicurezza sotto un modulo
Inverso modulare tramite Fermat è una lezione Coding Interview Prep gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Coding Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Coding Interview Prep include 4 lezioni in totale.
La divisione non funziona con il modulo
Addizione, sottrazione e moltiplicazione si comportano bene con un modulo, ma la semplice divisione no. Non è possibile dividere e poi applicare il resto. ⚠️
Sostituire la divisione con la moltiplicazione
La soluzione è l'inverso modulare: dividere per x diventa moltiplicare per l'inverso di x. Quindi a / b mod m si trasforma in a moltiplicato per l'inverso di b.
Cos'è un inverso
L'inverso di x è il numero che, moltiplicato per x con il modulo applicato, dà 1. Svolge il ruolo di 1/x nell'aritmetica ordinaria.
# x * inv(x) % m == 1I numeri primi lo rendono possibile
Un inverso esiste solo quando x non condivide alcun fattore con m. Usare un modulo primo come 1e9+7 garantisce che ogni x diverso da zero abbia un inverso.
Entra in scena il piccolo teorema di Fermat
Il piccolo teorema di Fermat afferma che, per un primo p, x elevato alla potenza p meno 1 è congruo a 1, purché x non sia un multiplo di p.
# x^(p-1) % p == 1Derivare l'inverso
Separando un fattore x, il resto deve essere il suo inverso. Quindi l'inverso di x è x elevato alla potenza p meno 2, calcolato modulo p.
# inv(x) = x^(p-2) % pCalcolarlo con la potenza rapida
Quell'esponente è enorme, quindi usi l'esponenziazione rapida della lezione precedente. In Python, una sola chiamata a pow esegue l'intera operazione.
inv = pow(x, MOD - 2, MOD)Usarlo per dividere
Per calcolare a diviso b con il modulo, moltiplichi a per l'inverso di b. Il resto è esattamente il quoziente reale modulo p.
ans = a * pow(b, MOD - 2, MOD) % MODNon invertire mai zero
Non esiste l'inverso di 0, poiché nessun numero moltiplicato per zero dà uno. Eviti di dividere per un valore che si riduce a zero con il modulo.
Costo di un singolo inverso
Ogni inverso di Fermat richiede una potenza rapida, quindi ha un costo di O(log p). È conveniente per poche divisioni, ma il costo si accumula se ne esegue milioni.
Suggerimento: inversi in blocco
Quando servono molti inversi, li precalcoli con un unico passaggio lineare ingegnoso invece di usare un pow per elemento. Questa tecnica servirà per nCr nella prossima lezione.
Verifica rapida
Quale potenza fornisce l'inverso modulare quando il modulo è primo?
Riepilogo
Ora sa eseguire divisioni con un modulo primo moltiplicando per l'inverso modulare, ottenuto come x elevato alla potenza p meno 2 tramite pow. Non inverta mai zero. ✅
Impara Coding Interview Prep con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 90
- Lezioni
- 360
Domande Frequenti
La lezione «Inverso modulare tramite Fermat» è gratuita?
Sì — il testo completo di «Inverso modulare tramite Fermat» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Coding Interview Prep, passa a CoddyKit PRO. Il corso Coding Interview Prep include 4 lezioni in totale.
Cosa imparerò in «Inverso modulare tramite Fermat»?
Dividere in sicurezza sotto un modulo Eserciti Coding Interview Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Coding Interview Prep?
Non è richiesta alcuna esperienza precedente. Coding Interview Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Inverso modulare tramite Fermat»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Coding Interview Prep?
Sì. Ogni lezione Coding Interview Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Lavorare modulo un numero primo
- Esponenziazione modulare rapida
- Inverso modulare tramite Fermat
- nCr con fattoriali precalcolati