Primalit a -...

Post on 17-Feb-2019

214 views 0 download

Transcript of Primalit a -...

Primalita

Gregorio D’Agostino

11 Aprile 2017

Metodi Esatti

Metodi indeterminati

Esercizi

Requisiti per la cifratura

I In molte applicazioni crittografiche (abbiamo visto RSA)bisogna trovare numeri primi molto grandi. Quindi dobbiamodisporre di metodi per verificare la primalita di un numero.

I I numeri primi devono essere presi a caso altrimentil’attaccante si concentra sul nostro metodo per trovare i primie lo spazio delle chiavi diviene molto meno esteso. In altreparole la cifratura diviene piu debole.

I Il tempo per trovare i numeri deve essere ”ragionevole”.

Requisiti per la cifratura

I In molte applicazioni crittografiche (abbiamo visto RSA)bisogna trovare numeri primi molto grandi. Quindi dobbiamodisporre di metodi per verificare la primalita di un numero.

I I numeri primi devono essere presi a caso altrimentil’attaccante si concentra sul nostro metodo per trovare i primie lo spazio delle chiavi diviene molto meno esteso. In altreparole la cifratura diviene piu debole.

I Il tempo per trovare i numeri deve essere ”ragionevole”.

Requisiti per la cifratura

I In molte applicazioni crittografiche (abbiamo visto RSA)bisogna trovare numeri primi molto grandi. Quindi dobbiamodisporre di metodi per verificare la primalita di un numero.

I I numeri primi devono essere presi a caso altrimentil’attaccante si concentra sul nostro metodo per trovare i primie lo spazio delle chiavi diviene molto meno esteso. In altreparole la cifratura diviene piu debole.

I Il tempo per trovare i numeri deve essere ”ragionevole”.

Metodo dell’ispezione

I Algoritmo: Dato un numero n per verificare se e primo, lo sidivide n per tutti i numeri minori della sua radice quadrataapprossimata per difetto.

∀a <√n : mod(n, a) 6= 0⇒ n primo.

I Numero di operazioni (divisioni) necessarie per il test: ∼√n

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

Metodo dell’ispezione

I Algoritmo: Dato un numero n per verificare se e primo, lo sidivide n per tutti i numeri minori della sua radice quadrataapprossimata per difetto.

∀a <√n : mod(n, a) 6= 0⇒ n primo.

I Numero di operazioni (divisioni) necessarie per il test: ∼√n

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

Metodo dell’ispezione

I Algoritmo: Dato un numero n per verificare se e primo, lo sidivide n per tutti i numeri minori della sua radice quadrataapprossimata per difetto.

∀a <√n : mod(n, a) 6= 0⇒ n primo.

I Numero di operazioni (divisioni) necessarie per il test: ∼√n

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

Miglioramenti del metodo della ispezioneI Se si considerano solo i numeri pari (ed il 2) si dimezza il

numero di divisioni e si aggiungono√n moltiplicazioni. Si

verificano solo i numeri della forma 2k + 1. il tempo di calcolo(∼√n(1− 1/2) = 1/2

√n).

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

I Se si escludono anche i multipli di 3 il tempo di calcolodiviene circa un terzo (

√n(1− 1/2)(1− 1/3) = 1/3

√n). Si

verificano solo i numeri della forma 6k ± 1I Se si escludono anche i multipli di 5 il tempo di calcolo diviene

circa un terzo (√n(1− 1/2)(1− 1/3)(1− 1/5) = 4/15

√n).

Memoria necessaria per il test: 6 interi di precisione pari allalunghezza di n.

I L’idea si puo estendere eliminando i multipli dei primi r primi.Il tempo scende e la memoria sale.

I Esercizio: scrivere codice Octave che attui il metododell’ispezione.

Miglioramenti del metodo della ispezioneI Se si considerano solo i numeri pari (ed il 2) si dimezza il

numero di divisioni e si aggiungono√n moltiplicazioni. Si

verificano solo i numeri della forma 2k + 1. il tempo di calcolo(∼√n(1− 1/2) = 1/2

√n).

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

I Se si escludono anche i multipli di 3 il tempo di calcolodiviene circa un terzo (

√n(1− 1/2)(1− 1/3) = 1/3

√n). Si

verificano solo i numeri della forma 6k ± 1I Se si escludono anche i multipli di 5 il tempo di calcolo diviene

circa un terzo (√n(1− 1/2)(1− 1/3)(1− 1/5) = 4/15

√n).

Memoria necessaria per il test: 6 interi di precisione pari allalunghezza di n.

I L’idea si puo estendere eliminando i multipli dei primi r primi.Il tempo scende e la memoria sale.

I Esercizio: scrivere codice Octave che attui il metododell’ispezione.

Miglioramenti del metodo della ispezioneI Se si considerano solo i numeri pari (ed il 2) si dimezza il

numero di divisioni e si aggiungono√n moltiplicazioni. Si

verificano solo i numeri della forma 2k + 1. il tempo di calcolo(∼√n(1− 1/2) = 1/2

√n).

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

I Se si escludono anche i multipli di 3 il tempo di calcolodiviene circa un terzo (

√n(1− 1/2)(1− 1/3) = 1/3

√n). Si

verificano solo i numeri della forma 6k ± 1

I Se si escludono anche i multipli di 5 il tempo di calcolo divienecirca un terzo (

√n(1− 1/2)(1− 1/3)(1− 1/5) = 4/15

√n).

Memoria necessaria per il test: 6 interi di precisione pari allalunghezza di n.

I L’idea si puo estendere eliminando i multipli dei primi r primi.Il tempo scende e la memoria sale.

I Esercizio: scrivere codice Octave che attui il metododell’ispezione.

Miglioramenti del metodo della ispezioneI Se si considerano solo i numeri pari (ed il 2) si dimezza il

numero di divisioni e si aggiungono√n moltiplicazioni. Si

verificano solo i numeri della forma 2k + 1. il tempo di calcolo(∼√n(1− 1/2) = 1/2

√n).

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

I Se si escludono anche i multipli di 3 il tempo di calcolodiviene circa un terzo (

√n(1− 1/2)(1− 1/3) = 1/3

√n). Si

verificano solo i numeri della forma 6k ± 1I Se si escludono anche i multipli di 5 il tempo di calcolo diviene

circa un terzo (√n(1− 1/2)(1− 1/3)(1− 1/5) = 4/15

√n).

Memoria necessaria per il test: 6 interi di precisione pari allalunghezza di n.

I L’idea si puo estendere eliminando i multipli dei primi r primi.Il tempo scende e la memoria sale.

I Esercizio: scrivere codice Octave che attui il metododell’ispezione.

Miglioramenti del metodo della ispezioneI Se si considerano solo i numeri pari (ed il 2) si dimezza il

numero di divisioni e si aggiungono√n moltiplicazioni. Si

verificano solo i numeri della forma 2k + 1. il tempo di calcolo(∼√n(1− 1/2) = 1/2

√n).

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

I Se si escludono anche i multipli di 3 il tempo di calcolodiviene circa un terzo (

√n(1− 1/2)(1− 1/3) = 1/3

√n). Si

verificano solo i numeri della forma 6k ± 1I Se si escludono anche i multipli di 5 il tempo di calcolo diviene

circa un terzo (√n(1− 1/2)(1− 1/3)(1− 1/5) = 4/15

√n).

Memoria necessaria per il test: 6 interi di precisione pari allalunghezza di n.

I L’idea si puo estendere eliminando i multipli dei primi r primi.Il tempo scende e la memoria sale.

I Esercizio: scrivere codice Octave che attui il metododell’ispezione.

Miglioramenti del metodo della ispezioneI Se si considerano solo i numeri pari (ed il 2) si dimezza il

numero di divisioni e si aggiungono√n moltiplicazioni. Si

verificano solo i numeri della forma 2k + 1. il tempo di calcolo(∼√n(1− 1/2) = 1/2

√n).

I Memoria necessaria per il test: 3 interi di precisione pari allalunghezza di n.

I Se si escludono anche i multipli di 3 il tempo di calcolodiviene circa un terzo (

√n(1− 1/2)(1− 1/3) = 1/3

√n). Si

verificano solo i numeri della forma 6k ± 1I Se si escludono anche i multipli di 5 il tempo di calcolo diviene

circa un terzo (√n(1− 1/2)(1− 1/3)(1− 1/5) = 4/15

√n).

Memoria necessaria per il test: 6 interi di precisione pari allalunghezza di n.

I L’idea si puo estendere eliminando i multipli dei primi r primi.Il tempo scende e la memoria sale.

I Esercizio: scrivere codice Octave che attui il metododell’ispezione.

Il crivello di Eratostene

I I crivello di Eratostene consente di trovare tutti i primi minoridella radice quadrata di un numero assegnato n e verificarnela primalita.

I Il metodo consiste nel cancellare da una lista (contenente inumeri fino a

√n) tutti i multipli dei numeri primi gia scoperti

iniziando dal 2 e dividere n solo per i sopravvissuti.

I Quando l’algoritmo e utilizzato solo per verificare la primalitadel numero n, si interrompe non appena uno dei primi dividen. L’algoritmo in questo caso e l’estensione naturale deiprecedenti.

I La memoria richiesta e pari a√n, ma il tempo si riduce: le

divisioni sono assenti e si compiono circa√nπ(n)

moltiplicazioni. Con il simbolo π(n) si indica il numero deinumeri primi minori di n.

I Esercizio: Scrivere un codice di Octave che realizzi il crivellodi Eratostene. Calcolare i primi 100 primi.

Il crivello di Eratostene

I I crivello di Eratostene consente di trovare tutti i primi minoridella radice quadrata di un numero assegnato n e verificarnela primalita.

I Il metodo consiste nel cancellare da una lista (contenente inumeri fino a

√n) tutti i multipli dei numeri primi gia scoperti

iniziando dal 2 e dividere n solo per i sopravvissuti.

I Quando l’algoritmo e utilizzato solo per verificare la primalitadel numero n, si interrompe non appena uno dei primi dividen. L’algoritmo in questo caso e l’estensione naturale deiprecedenti.

I La memoria richiesta e pari a√n, ma il tempo si riduce: le

divisioni sono assenti e si compiono circa√nπ(n)

moltiplicazioni. Con il simbolo π(n) si indica il numero deinumeri primi minori di n.

I Esercizio: Scrivere un codice di Octave che realizzi il crivellodi Eratostene. Calcolare i primi 100 primi.

Il crivello di Eratostene

I I crivello di Eratostene consente di trovare tutti i primi minoridella radice quadrata di un numero assegnato n e verificarnela primalita.

I Il metodo consiste nel cancellare da una lista (contenente inumeri fino a

√n) tutti i multipli dei numeri primi gia scoperti

iniziando dal 2 e dividere n solo per i sopravvissuti.

I Quando l’algoritmo e utilizzato solo per verificare la primalitadel numero n, si interrompe non appena uno dei primi dividen. L’algoritmo in questo caso e l’estensione naturale deiprecedenti.

I La memoria richiesta e pari a√n, ma il tempo si riduce: le

divisioni sono assenti e si compiono circa√nπ(n)

moltiplicazioni. Con il simbolo π(n) si indica il numero deinumeri primi minori di n.

I Esercizio: Scrivere un codice di Octave che realizzi il crivellodi Eratostene. Calcolare i primi 100 primi.

Il crivello di Eratostene

I I crivello di Eratostene consente di trovare tutti i primi minoridella radice quadrata di un numero assegnato n e verificarnela primalita.

I Il metodo consiste nel cancellare da una lista (contenente inumeri fino a

√n) tutti i multipli dei numeri primi gia scoperti

iniziando dal 2 e dividere n solo per i sopravvissuti.

I Quando l’algoritmo e utilizzato solo per verificare la primalitadel numero n, si interrompe non appena uno dei primi dividen. L’algoritmo in questo caso e l’estensione naturale deiprecedenti.

I La memoria richiesta e pari a√n, ma il tempo si riduce: le

divisioni sono assenti e si compiono circa√nπ(n)

moltiplicazioni. Con il simbolo π(n) si indica il numero deinumeri primi minori di n.

I Esercizio: Scrivere un codice di Octave che realizzi il crivellodi Eratostene. Calcolare i primi 100 primi.

Il crivello di Eratostene

I I crivello di Eratostene consente di trovare tutti i primi minoridella radice quadrata di un numero assegnato n e verificarnela primalita.

I Il metodo consiste nel cancellare da una lista (contenente inumeri fino a

√n) tutti i multipli dei numeri primi gia scoperti

iniziando dal 2 e dividere n solo per i sopravvissuti.

I Quando l’algoritmo e utilizzato solo per verificare la primalitadel numero n, si interrompe non appena uno dei primi dividen. L’algoritmo in questo caso e l’estensione naturale deiprecedenti.

I La memoria richiesta e pari a√n, ma il tempo si riduce: le

divisioni sono assenti e si compiono circa√nπ(n)

moltiplicazioni. Con il simbolo π(n) si indica il numero deinumeri primi minori di n.

I Esercizio: Scrivere un codice di Octave che realizzi il crivellodi Eratostene. Calcolare i primi 100 primi.

Quanto sono densi i numeri primi

I Abbiamo gia dimostrato che sono infiniti. Quindi:

limn→∞

π(n) =∞.

I La funzione π(n) e monotona crescente. Con quale velocitava all’infinito?

I Il teorema dei numeri primi (attribuito ad Hadamard e a de laVallee-Poussin) dimostra che si comporta comeπ(n) ∼ n/log(n), cioe:

limn→∞

π(n)

n/log(n)= 1.

I Se chiamiamo pn l’n-esimo numero primo, una formulazioneequivalente e:

pn ∼ n · log(n).

Quanto sono densi i numeri primi

I Abbiamo gia dimostrato che sono infiniti. Quindi:

limn→∞

π(n) =∞.

I La funzione π(n) e monotona crescente. Con quale velocitava all’infinito?

I Il teorema dei numeri primi (attribuito ad Hadamard e a de laVallee-Poussin) dimostra che si comporta comeπ(n) ∼ n/log(n), cioe:

limn→∞

π(n)

n/log(n)= 1.

I Se chiamiamo pn l’n-esimo numero primo, una formulazioneequivalente e:

pn ∼ n · log(n).

Quanto sono densi i numeri primi

I Abbiamo gia dimostrato che sono infiniti. Quindi:

limn→∞

π(n) =∞.

I La funzione π(n) e monotona crescente. Con quale velocitava all’infinito?

I Il teorema dei numeri primi (attribuito ad Hadamard e a de laVallee-Poussin) dimostra che si comporta comeπ(n) ∼ n/log(n), cioe:

limn→∞

π(n)

n/log(n)= 1.

I Se chiamiamo pn l’n-esimo numero primo, una formulazioneequivalente e:

pn ∼ n · log(n).

Quanto sono densi i numeri primi

I Abbiamo gia dimostrato che sono infiniti. Quindi:

limn→∞

π(n) =∞.

I La funzione π(n) e monotona crescente. Con quale velocitava all’infinito?

I Il teorema dei numeri primi (attribuito ad Hadamard e a de laVallee-Poussin) dimostra che si comporta comeπ(n) ∼ n/log(n), cioe:

limn→∞

π(n)

n/log(n)= 1.

I Se chiamiamo pn l’n-esimo numero primo, una formulazioneequivalente e:

pn ∼ n · log(n).

Quanto sono densi i numeri primi - cont

I Gauss ha congetturato che π(n) si comporti come la funzioneLi :

Li(n)− Li(2)def=

∫ n

2

dx

log(x).

I In questo caso la derivata (cioe la densita) sarebbe proprio1/log(n). Ma questa ipotesi non e stata mai dimostrata, neconfutata.

Quanto sono densi i numeri primi - cont

I Gauss ha congetturato che π(n) si comporti come la funzioneLi :

Li(n)− Li(2)def=

∫ n

2

dx

log(x).

I In questo caso la derivata (cioe la densita) sarebbe proprio1/log(n). Ma questa ipotesi non e stata mai dimostrata, neconfutata.

Conseguenze per la criptografia

I La densita dei numeri primi va con l’inverso del logaritmo din. Quindi piu e grande n e piu e difficile trovare dei numeriprimi scegliendo a caso.

ρ(n)def=

π(n)

n∼ 1

log(n).

I Questo significa che se cerchiamo chiavi piu complesse per lacifratura RSA dobbiamo spendere un tempo piu lungo odisporre di una piattaforma di calcolo piu potente.

I Come gia detto l’alternativa di utilizzare metodi non uniformiper scegliere i numeri primi da utilizzare come chiavi riduce lospazio delle chiavi e rende la cifratura meno robusta.

Conseguenze per la criptografia

I La densita dei numeri primi va con l’inverso del logaritmo din. Quindi piu e grande n e piu e difficile trovare dei numeriprimi scegliendo a caso.

ρ(n)def=

π(n)

n∼ 1

log(n).

I Questo significa che se cerchiamo chiavi piu complesse per lacifratura RSA dobbiamo spendere un tempo piu lungo odisporre di una piattaforma di calcolo piu potente.

I Come gia detto l’alternativa di utilizzare metodi non uniformiper scegliere i numeri primi da utilizzare come chiavi riduce lospazio delle chiavi e rende la cifratura meno robusta.

Conseguenze per la criptografia

I La densita dei numeri primi va con l’inverso del logaritmo din. Quindi piu e grande n e piu e difficile trovare dei numeriprimi scegliendo a caso.

ρ(n)def=

π(n)

n∼ 1

log(n).

I Questo significa che se cerchiamo chiavi piu complesse per lacifratura RSA dobbiamo spendere un tempo piu lungo odisporre di una piattaforma di calcolo piu potente.

I Come gia detto l’alternativa di utilizzare metodi non uniformiper scegliere i numeri primi da utilizzare come chiavi riduce lospazio delle chiavi e rende la cifratura meno robusta.

Il Metodo di FermatI Si basa sul principio che se un numero non e primo, e

esprimibile in forma di prodotto di due numeri a e b (nonnecessariamente primi):

n = a · b.

I Trovare a e b equivale a trovare le loro semisomma (s) esemidifferenza (d): {

sdef= a+b

2 ,

ddef= a−b

2 ;

che si inverte in: {a = s + d ,b = s − d .

I La differenza dei quadrati di s e d eguaglia n:

s2 − d2 = 1/4[(a + b)2 − (a− b)2] = 1/4[4ab] = ab = n.

Il Metodo di FermatI Si basa sul principio che se un numero non e primo, e

esprimibile in forma di prodotto di due numeri a e b (nonnecessariamente primi):

n = a · b.I Trovare a e b equivale a trovare le loro semisomma (s) e

semidifferenza (d): {s

def= a+b

2 ,

ddef= a−b

2 ;

che si inverte in: {a = s + d ,b = s − d .

I La differenza dei quadrati di s e d eguaglia n:

s2 − d2 = 1/4[(a + b)2 − (a− b)2] = 1/4[4ab] = ab = n.

Il Metodo di FermatI Si basa sul principio che se un numero non e primo, e

esprimibile in forma di prodotto di due numeri a e b (nonnecessariamente primi):

n = a · b.I Trovare a e b equivale a trovare le loro semisomma (s) e

semidifferenza (d): {s

def= a+b

2 ,

ddef= a−b

2 ;

che si inverte in: {a = s + d ,b = s − d .

I La differenza dei quadrati di s e d eguaglia n:

s2 − d2 = 1/4[(a + b)2 − (a− b)2] = 1/4[4ab] = ab = n.

Algoritmo di Fermat

I L’agoritmo di Fermat, parte dal numero k0 piu piccolo numeroil cui quadrato supera n:{

k20 > n,(k0 − 1)2 < n;

e calcola la differenza del quadrato rispetto ad n (k2 − n).

I Ad ogni passo si incrementa di uno il numero k (k → k + 1) ela procedura si arresta quando k2 − n e un quadrato perfettoe quindi possiamo identificare k con s e k2 − n con d2.

I p = k +√k2 − n, q = k −

√k2 − n

I Esercizio: Scrivere un codice Octave che realizza l’algoritmodi Fermat.

I L’algoritmo richiede pochissima memoria (5 interi) e unnumero di passi che dipende dalla differenza d .

Algoritmo di Fermat

I L’agoritmo di Fermat, parte dal numero k0 piu piccolo numeroil cui quadrato supera n:{

k20 > n,(k0 − 1)2 < n;

e calcola la differenza del quadrato rispetto ad n (k2 − n).

I Ad ogni passo si incrementa di uno il numero k (k → k + 1) ela procedura si arresta quando k2 − n e un quadrato perfettoe quindi possiamo identificare k con s e k2 − n con d2.

I p = k +√k2 − n, q = k −

√k2 − n

I Esercizio: Scrivere un codice Octave che realizza l’algoritmodi Fermat.

I L’algoritmo richiede pochissima memoria (5 interi) e unnumero di passi che dipende dalla differenza d .

Algoritmo di Fermat

I L’agoritmo di Fermat, parte dal numero k0 piu piccolo numeroil cui quadrato supera n:{

k20 > n,(k0 − 1)2 < n;

e calcola la differenza del quadrato rispetto ad n (k2 − n).

I Ad ogni passo si incrementa di uno il numero k (k → k + 1) ela procedura si arresta quando k2 − n e un quadrato perfettoe quindi possiamo identificare k con s e k2 − n con d2.

I p = k +√k2 − n, q = k −

√k2 − n

I Esercizio: Scrivere un codice Octave che realizza l’algoritmodi Fermat.

I L’algoritmo richiede pochissima memoria (5 interi) e unnumero di passi che dipende dalla differenza d .

Algoritmo di Fermat

I L’agoritmo di Fermat, parte dal numero k0 piu piccolo numeroil cui quadrato supera n:{

k20 > n,(k0 − 1)2 < n;

e calcola la differenza del quadrato rispetto ad n (k2 − n).

I Ad ogni passo si incrementa di uno il numero k (k → k + 1) ela procedura si arresta quando k2 − n e un quadrato perfettoe quindi possiamo identificare k con s e k2 − n con d2.

I p = k +√k2 − n, q = k −

√k2 − n

I Esercizio: Scrivere un codice Octave che realizza l’algoritmodi Fermat.

I L’algoritmo richiede pochissima memoria (5 interi) e unnumero di passi che dipende dalla differenza d .

Conseguenze dell’esistenza dell’algoritmo di Fermat sullacifratura RSA

I Se nell’algoritmo di RSA scegliamo due fattori primi (p e q)vicini tra loro, d sara piccola e quindi l’algoritmo di Fermatfattorizzera n e si arrestera in pochi passi.

I Se invece scegliamo due numeri primi troppo diversi tra loroallora uno dei due sara piccolo ed il metodo dell’ispezionediretta si arrestera in pochi passi.

I Il cifratore deve prevenire da entrambi i possibili attacchi. Neconsegue che la differenza e la somma dei due numeri primi (pe q) devono essere dello stesso ordine di grandezza. Lacardinalita di questo spazio definira la complessita delle chiavi.In pratica basta limitare la scelta di p (e quindi q) ad esempioall’intervallo (1/2

√n, 3/4

√n).

Conseguenze dell’esistenza dell’algoritmo di Fermat sullacifratura RSA

I Se nell’algoritmo di RSA scegliamo due fattori primi (p e q)vicini tra loro, d sara piccola e quindi l’algoritmo di Fermatfattorizzera n e si arrestera in pochi passi.

I Se invece scegliamo due numeri primi troppo diversi tra loroallora uno dei due sara piccolo ed il metodo dell’ispezionediretta si arrestera in pochi passi.

I Il cifratore deve prevenire da entrambi i possibili attacchi. Neconsegue che la differenza e la somma dei due numeri primi (pe q) devono essere dello stesso ordine di grandezza. Lacardinalita di questo spazio definira la complessita delle chiavi.In pratica basta limitare la scelta di p (e quindi q) ad esempioall’intervallo (1/2

√n, 3/4

√n).

Conseguenze dell’esistenza dell’algoritmo di Fermat sullacifratura RSA

I Se nell’algoritmo di RSA scegliamo due fattori primi (p e q)vicini tra loro, d sara piccola e quindi l’algoritmo di Fermatfattorizzera n e si arrestera in pochi passi.

I Se invece scegliamo due numeri primi troppo diversi tra loroallora uno dei due sara piccolo ed il metodo dell’ispezionediretta si arrestera in pochi passi.

I Il cifratore deve prevenire da entrambi i possibili attacchi. Neconsegue che la differenza e la somma dei due numeri primi (pe q) devono essere dello stesso ordine di grandezza. Lacardinalita di questo spazio definira la complessita delle chiavi.In pratica basta limitare la scelta di p (e quindi q) ad esempioall’intervallo (1/2

√n, 3/4

√n).

Variazioni sulla cifratura RSA

I Una delle idee piu naturali per complicare RSA consistenell’usare una fattorizzazione a tre o piu primi.

n = p1p2p3.

I In realta, la situazione peggiorerebbe per il cifratore, perche ilminore dei fattori sarebbe necessariamente piu piccolo e quindibasterebbe applicare il crivello di Eratostene a tutti i numeriminori della radice cubica di n. Il metodo dell’ispezionerisulterebbe notevolmente semplificato.

I Inoltre anche la minima differenza tra due fattori sarebbe piupiccola, accelerando quindi convergenza del metodo diFermat. Anche in questo caso basterebbe studiare i k minoridi k0 + n1/3.

Variazioni sulla cifratura RSA

I Una delle idee piu naturali per complicare RSA consistenell’usare una fattorizzazione a tre o piu primi.

n = p1p2p3.

I In realta, la situazione peggiorerebbe per il cifratore, perche ilminore dei fattori sarebbe necessariamente piu piccolo e quindibasterebbe applicare il crivello di Eratostene a tutti i numeriminori della radice cubica di n. Il metodo dell’ispezionerisulterebbe notevolmente semplificato.

I Inoltre anche la minima differenza tra due fattori sarebbe piupiccola, accelerando quindi convergenza del metodo diFermat. Anche in questo caso basterebbe studiare i k minoridi k0 + n1/3.

Variazioni sulla cifratura RSA

I Una delle idee piu naturali per complicare RSA consistenell’usare una fattorizzazione a tre o piu primi.

n = p1p2p3.

I In realta, la situazione peggiorerebbe per il cifratore, perche ilminore dei fattori sarebbe necessariamente piu piccolo e quindibasterebbe applicare il crivello di Eratostene a tutti i numeriminori della radice cubica di n. Il metodo dell’ispezionerisulterebbe notevolmente semplificato.

I Inoltre anche la minima differenza tra due fattori sarebbe piupiccola, accelerando quindi convergenza del metodo diFermat. Anche in questo caso basterebbe studiare i k minoridi k0 + n1/3.

Metodi indeterminati

I I metodi precedenti consentono di determinare la primalita delnumero n con certezza e consentono anche di determinarealmeno una fattorizzazione.

I Esistono dei criteri che non risolvono con certezza il problemadella primalita, ma che consentono in alcuni casi di escluderla.

I Tali metodi sono basati su condizioni necessarie di primalita,ma non sufficienti.

I I numeri che soddisfano alcuni criteri necessari di primalita manon suffienti di chiamano pseudo-primi

I Il metodo (gia visto) dalla primalita cinese e uno di questi: se2n 6= 1 (mod n) possiamo escludere che n sia primo, ma se larelazione e soddisfatta non possiamo esprimerci.

I Esercizio: scrivere un codice Octave che esegua il test diprimalita cinese.

Metodi indeterminati

I I metodi precedenti consentono di determinare la primalita delnumero n con certezza e consentono anche di determinarealmeno una fattorizzazione.

I Esistono dei criteri che non risolvono con certezza il problemadella primalita, ma che consentono in alcuni casi di escluderla.

I Tali metodi sono basati su condizioni necessarie di primalita,ma non sufficienti.

I I numeri che soddisfano alcuni criteri necessari di primalita manon suffienti di chiamano pseudo-primi

I Il metodo (gia visto) dalla primalita cinese e uno di questi: se2n 6= 1 (mod n) possiamo escludere che n sia primo, ma se larelazione e soddisfatta non possiamo esprimerci.

I Esercizio: scrivere un codice Octave che esegua il test diprimalita cinese.

Metodi indeterminati

I I metodi precedenti consentono di determinare la primalita delnumero n con certezza e consentono anche di determinarealmeno una fattorizzazione.

I Esistono dei criteri che non risolvono con certezza il problemadella primalita, ma che consentono in alcuni casi di escluderla.

I Tali metodi sono basati su condizioni necessarie di primalita,ma non sufficienti.

I I numeri che soddisfano alcuni criteri necessari di primalita manon suffienti di chiamano pseudo-primi

I Il metodo (gia visto) dalla primalita cinese e uno di questi: se2n 6= 1 (mod n) possiamo escludere che n sia primo, ma se larelazione e soddisfatta non possiamo esprimerci.

I Esercizio: scrivere un codice Octave che esegua il test diprimalita cinese.

Metodi indeterminati

I I metodi precedenti consentono di determinare la primalita delnumero n con certezza e consentono anche di determinarealmeno una fattorizzazione.

I Esistono dei criteri che non risolvono con certezza il problemadella primalita, ma che consentono in alcuni casi di escluderla.

I Tali metodi sono basati su condizioni necessarie di primalita,ma non sufficienti.

I I numeri che soddisfano alcuni criteri necessari di primalita manon suffienti di chiamano pseudo-primi

I Il metodo (gia visto) dalla primalita cinese e uno di questi: se2n 6= 1 (mod n) possiamo escludere che n sia primo, ma se larelazione e soddisfatta non possiamo esprimerci.

I Esercizio: scrivere un codice Octave che esegua il test diprimalita cinese.

Metodi indeterminati

I I metodi precedenti consentono di determinare la primalita delnumero n con certezza e consentono anche di determinarealmeno una fattorizzazione.

I Esistono dei criteri che non risolvono con certezza il problemadella primalita, ma che consentono in alcuni casi di escluderla.

I Tali metodi sono basati su condizioni necessarie di primalita,ma non sufficienti.

I I numeri che soddisfano alcuni criteri necessari di primalita manon suffienti di chiamano pseudo-primi

I Il metodo (gia visto) dalla primalita cinese e uno di questi: se2n 6= 1 (mod n) possiamo escludere che n sia primo, ma se larelazione e soddisfatta non possiamo esprimerci.

I Esercizio: scrivere un codice Octave che esegua il test diprimalita cinese.

Metodi indeterminati

I I metodi precedenti consentono di determinare la primalita delnumero n con certezza e consentono anche di determinarealmeno una fattorizzazione.

I Esistono dei criteri che non risolvono con certezza il problemadella primalita, ma che consentono in alcuni casi di escluderla.

I Tali metodi sono basati su condizioni necessarie di primalita,ma non sufficienti.

I I numeri che soddisfano alcuni criteri necessari di primalita manon suffienti di chiamano pseudo-primi

I Il metodo (gia visto) dalla primalita cinese e uno di questi: se2n 6= 1 (mod n) possiamo escludere che n sia primo, ma se larelazione e soddisfatta non possiamo esprimerci.

I Esercizio: scrivere un codice Octave che esegua il test diprimalita cinese.

Criterio di Eulero

I Anche questo criterio puo solo escludere la primalita, ma nongarantirla.

I Si basa sul piccolo teorema di Fermat.

I In realta, se per tutti gli a (non solo il 2) an−1 = 1 (mod n) sipuo dire con certezza che n e primo [Bastano i numeri fino ad(n+1)/2].

I Nella realta questo sarebbe molto piu onerosocomputazionalmente del metodo di Eratostene (e perfinodell’ispezione diretta) e quindi si limita il test ad un insiemefinito di a. In tal modo il test garantisce una pseudoprimalita(puo solo escludere la primalita se siamo fortunati). In praticadiviene solo piu accurato del test cinese.

I Per un’ insieme selezionato di numeri a ∈ S , si verifica:

an−12 = ±1 (mod n)

Criterio di Eulero

I Anche questo criterio puo solo escludere la primalita, ma nongarantirla.

I Si basa sul piccolo teorema di Fermat.

I In realta, se per tutti gli a (non solo il 2) an−1 = 1 (mod n) sipuo dire con certezza che n e primo [Bastano i numeri fino ad(n+1)/2].

I Nella realta questo sarebbe molto piu onerosocomputazionalmente del metodo di Eratostene (e perfinodell’ispezione diretta) e quindi si limita il test ad un insiemefinito di a. In tal modo il test garantisce una pseudoprimalita(puo solo escludere la primalita se siamo fortunati). In praticadiviene solo piu accurato del test cinese.

I Per un’ insieme selezionato di numeri a ∈ S , si verifica:

an−12 = ±1 (mod n)

Criterio di Eulero

I Anche questo criterio puo solo escludere la primalita, ma nongarantirla.

I Si basa sul piccolo teorema di Fermat.

I In realta, se per tutti gli a (non solo il 2) an−1 = 1 (mod n) sipuo dire con certezza che n e primo [Bastano i numeri fino ad(n+1)/2].

I Nella realta questo sarebbe molto piu onerosocomputazionalmente del metodo di Eratostene (e perfinodell’ispezione diretta) e quindi si limita il test ad un insiemefinito di a. In tal modo il test garantisce una pseudoprimalita(puo solo escludere la primalita se siamo fortunati). In praticadiviene solo piu accurato del test cinese.

I Per un’ insieme selezionato di numeri a ∈ S , si verifica:

an−12 = ±1 (mod n)

Criterio di Eulero

I Anche questo criterio puo solo escludere la primalita, ma nongarantirla.

I Si basa sul piccolo teorema di Fermat.

I In realta, se per tutti gli a (non solo il 2) an−1 = 1 (mod n) sipuo dire con certezza che n e primo [Bastano i numeri fino ad(n+1)/2].

I Nella realta questo sarebbe molto piu onerosocomputazionalmente del metodo di Eratostene (e perfinodell’ispezione diretta) e quindi si limita il test ad un insiemefinito di a. In tal modo il test garantisce una pseudoprimalita(puo solo escludere la primalita se siamo fortunati). In praticadiviene solo piu accurato del test cinese.

I Per un’ insieme selezionato di numeri a ∈ S , si verifica:

an−12 = ±1 (mod n)

Criterio di Eulero

I Anche questo criterio puo solo escludere la primalita, ma nongarantirla.

I Si basa sul piccolo teorema di Fermat.

I In realta, se per tutti gli a (non solo il 2) an−1 = 1 (mod n) sipuo dire con certezza che n e primo [Bastano i numeri fino ad(n+1)/2].

I Nella realta questo sarebbe molto piu onerosocomputazionalmente del metodo di Eratostene (e perfinodell’ispezione diretta) e quindi si limita il test ad un insiemefinito di a. In tal modo il test garantisce una pseudoprimalita(puo solo escludere la primalita se siamo fortunati). In praticadiviene solo piu accurato del test cinese.

I Per un’ insieme selezionato di numeri a ∈ S , si verifica:

an−12 = ±1 (mod n)

Criteri basati sul piccolo teorema di Fermat

I Si possono scegliere a caso dei numeri ed eseguire il test diFermat su di essi. Chiameremo questo criterio ”Ispezionecasuale alla Fermat di dimensione m” (m numero di valoritestati).

an−1 ≡ 1 ( mod n ).

I I numeri di Carmichael resistono a qualunque test di Fermat(esclusi i divisori dello zero cioe di n). Per definizione unnumero di Carmichael soddisfa le seguenti eguaglianze:

n : ∀a < n : an ≡ a ( mod n ).

I Il piu piccolo numero di Carmichael e 341=11x31.

I Esercizio verificare con Octave che 341 e di Carmichael.Quanto fa 1131 e 3111 ? Che succede se a e un divisore di341?

Criteri basati sul piccolo teorema di Fermat

I Si possono scegliere a caso dei numeri ed eseguire il test diFermat su di essi. Chiameremo questo criterio ”Ispezionecasuale alla Fermat di dimensione m” (m numero di valoritestati).

an−1 ≡ 1 ( mod n ).

I I numeri di Carmichael resistono a qualunque test di Fermat(esclusi i divisori dello zero cioe di n). Per definizione unnumero di Carmichael soddisfa le seguenti eguaglianze:

n : ∀a < n : an ≡ a ( mod n ).

I Il piu piccolo numero di Carmichael e 341=11x31.

I Esercizio verificare con Octave che 341 e di Carmichael.Quanto fa 1131 e 3111 ? Che succede se a e un divisore di341?

Criteri basati sul piccolo teorema di Fermat

I Si possono scegliere a caso dei numeri ed eseguire il test diFermat su di essi. Chiameremo questo criterio ”Ispezionecasuale alla Fermat di dimensione m” (m numero di valoritestati).

an−1 ≡ 1 ( mod n ).

I I numeri di Carmichael resistono a qualunque test di Fermat(esclusi i divisori dello zero cioe di n). Per definizione unnumero di Carmichael soddisfa le seguenti eguaglianze:

n : ∀a < n : an ≡ a ( mod n ).

I Il piu piccolo numero di Carmichael e 341=11x31.

I Esercizio verificare con Octave che 341 e di Carmichael.Quanto fa 1131 e 3111 ? Che succede se a e un divisore di341?

Criteri basati sul piccolo teorema di Fermat

I Si possono scegliere a caso dei numeri ed eseguire il test diFermat su di essi. Chiameremo questo criterio ”Ispezionecasuale alla Fermat di dimensione m” (m numero di valoritestati).

an−1 ≡ 1 ( mod n ).

I I numeri di Carmichael resistono a qualunque test di Fermat(esclusi i divisori dello zero cioe di n). Per definizione unnumero di Carmichael soddisfa le seguenti eguaglianze:

n : ∀a < n : an ≡ a ( mod n ).

I Il piu piccolo numero di Carmichael e 341=11x31.

I Esercizio verificare con Octave che 341 e di Carmichael.Quanto fa 1131 e 3111 ? Che succede se a e un divisore di341?

Criteri basati sulle radici quadrate dell’unitaI Esistono sempre due radici banali dell’unita:{

12 ≡ 1 (mod n),(n − 1)2 = n2 − 2n + 1 ≡ 1 (mod n);

I x2 = 1 equivale a x2 − 1 = 0. Se n e primo, Zn e un campo;(x − 1)(x + 1) = 0 implica che uno dei due fattori sia nullo edunque le due soluzioni banali sono le uniche.

I Se n non e primo, possono esistere altre soluzioni. Inparticolare se n = pq (con p e q primi). x2 = 1 equivale (th.dei resti cinese) al sistema:{

x2 ≡ 1 (mod p),x2 ≡ 1 (mod q);

che a sua volta equivale a{x ≡ 1, p − 1 (mod p),x ≡ 1, q − 1 (mod q);

Criteri basati sulle radici quadrate dell’unitaI Esistono sempre due radici banali dell’unita:{

12 ≡ 1 (mod n),(n − 1)2 = n2 − 2n + 1 ≡ 1 (mod n);

I x2 = 1 equivale a x2 − 1 = 0. Se n e primo, Zn e un campo;(x − 1)(x + 1) = 0 implica che uno dei due fattori sia nullo edunque le due soluzioni banali sono le uniche.

I Se n non e primo, possono esistere altre soluzioni. Inparticolare se n = pq (con p e q primi). x2 = 1 equivale (th.dei resti cinese) al sistema:{

x2 ≡ 1 (mod p),x2 ≡ 1 (mod q);

che a sua volta equivale a{x ≡ 1, p − 1 (mod p),x ≡ 1, q − 1 (mod q);

Criteri basati sulle radici quadrate dell’unitaI Esistono sempre due radici banali dell’unita:{

12 ≡ 1 (mod n),(n − 1)2 = n2 − 2n + 1 ≡ 1 (mod n);

I x2 = 1 equivale a x2 − 1 = 0. Se n e primo, Zn e un campo;(x − 1)(x + 1) = 0 implica che uno dei due fattori sia nullo edunque le due soluzioni banali sono le uniche.

I Se n non e primo, possono esistere altre soluzioni. Inparticolare se n = pq (con p e q primi). x2 = 1 equivale (th.dei resti cinese) al sistema:{

x2 ≡ 1 (mod p),x2 ≡ 1 (mod q);

che a sua volta equivale a{x ≡ 1, p − 1 (mod p),x ≡ 1, q − 1 (mod q);

Le radici quadrate non banali dell’unita

I Quindi ci sono quattro soluzioni distinte di cui due sono quellebanali:

{x ≡ 1 (mod p),x ≡ 1 (mod q);

{x ≡ p − 1 (mod p),x ≡ q − 1 (mod q);

e corrispindono alle soluzioni x = 1 e x = n− 1 = pq − 1. Mave ne sono altre due sono non banali:{

x ≡ 1 (mod p),x ≡ q − 1 (mod q);

{x ≡ p − 1 (mod p),x ≡ 1 (mod q).

I Conoscendo una delle due radici non banali:

x21 ≡ 1 con 1 < x < n − 1.

I si ricava facilmente anche l’altra (x2 = n − x1):

x22 = (n − x1)2 = n2 − 2nx1 + x21 ≡ 1.

Le radici quadrate non banali dell’unita

I Quindi ci sono quattro soluzioni distinte di cui due sono quellebanali:

{x ≡ 1 (mod p),x ≡ 1 (mod q);

{x ≡ p − 1 (mod p),x ≡ q − 1 (mod q);

e corrispindono alle soluzioni x = 1 e x = n− 1 = pq − 1. Mave ne sono altre due sono non banali:{

x ≡ 1 (mod p),x ≡ q − 1 (mod q);

{x ≡ p − 1 (mod p),x ≡ 1 (mod q).

I Conoscendo una delle due radici non banali:

x21 ≡ 1 con 1 < x < n − 1.

I si ricava facilmente anche l’altra (x2 = n − x1):

x22 = (n − x1)2 = n2 − 2nx1 + x21 ≡ 1.

Le radici quadrate non banali dell’unita

I Quindi ci sono quattro soluzioni distinte di cui due sono quellebanali:

{x ≡ 1 (mod p),x ≡ 1 (mod q);

{x ≡ p − 1 (mod p),x ≡ q − 1 (mod q);

e corrispindono alle soluzioni x = 1 e x = n− 1 = pq − 1. Mave ne sono altre due sono non banali:{

x ≡ 1 (mod p),x ≡ q − 1 (mod q);

{x ≡ p − 1 (mod p),x ≡ 1 (mod q).

I Conoscendo una delle due radici non banali:

x21 ≡ 1 con 1 < x < n − 1.

I si ricava facilmente anche l’altra (x2 = n − x1):

x22 = (n − x1)2 = n2 − 2nx1 + x21 ≡ 1.

Decomposizione tramite una radice quadrata dell’unita

I Basta conoscere una radice quadrata non banale dell’unita perdecomporre n:

x21 ≡ 1⇔ (x1 − 1)(x1 + 1) ≡ 0 (mod n).

I che in Z diviene:

(x1 − 1)(x1 + 1) = kn.

I Per il teorema dell’ unicita della decomposizione, uno deifattori x1 ± 1 e multiplo di p e l’altro di q.

I Quindi per calcolare p (o q) basta calcolare il massimocomune divisore tra x1 − 1 ed n.{

q = ((x1 − 1), n),p = ((x1 + 1), n).

Decomposizione tramite una radice quadrata dell’unita

I Basta conoscere una radice quadrata non banale dell’unita perdecomporre n:

x21 ≡ 1⇔ (x1 − 1)(x1 + 1) ≡ 0 (mod n).

I che in Z diviene:

(x1 − 1)(x1 + 1) = kn.

I Per il teorema dell’ unicita della decomposizione, uno deifattori x1 ± 1 e multiplo di p e l’altro di q.

I Quindi per calcolare p (o q) basta calcolare il massimocomune divisore tra x1 − 1 ed n.{

q = ((x1 − 1), n),p = ((x1 + 1), n).

Decomposizione tramite una radice quadrata dell’unita

I Basta conoscere una radice quadrata non banale dell’unita perdecomporre n:

x21 ≡ 1⇔ (x1 − 1)(x1 + 1) ≡ 0 (mod n).

I che in Z diviene:

(x1 − 1)(x1 + 1) = kn.

I Per il teorema dell’ unicita della decomposizione, uno deifattori x1 ± 1 e multiplo di p e l’altro di q.

I Quindi per calcolare p (o q) basta calcolare il massimocomune divisore tra x1 − 1 ed n.{

q = ((x1 − 1), n),p = ((x1 + 1), n).

Decomposizione tramite una radice quadrata dell’unita

I Basta conoscere una radice quadrata non banale dell’unita perdecomporre n:

x21 ≡ 1⇔ (x1 − 1)(x1 + 1) ≡ 0 (mod n).

I che in Z diviene:

(x1 − 1)(x1 + 1) = kn.

I Per il teorema dell’ unicita della decomposizione, uno deifattori x1 ± 1 e multiplo di p e l’altro di q.

I Quindi per calcolare p (o q) basta calcolare il massimocomune divisore tra x1 − 1 ed n.{

q = ((x1 − 1), n),p = ((x1 + 1), n).

Criteri basati sulle radici quadrate dell’unita - cont

I Da quanto visto, e possibile definire un criterio dipseudoprimalita con i seguenti passi:

I Si scelgono a caso m numeri maggiori di n/2 e si elevano alquadrato (analogamente al metodo di Fermat).

I Se nessuno dei numeri e congruo all’unita il numero epseudoprimo.

I Se scopriamo una radice dell’unita possiamo decomporre n equindi decifrare RSA.

I Possiamo anche combinare i due metodi. Si eleva k alquadrato, poi se e congruo all’unita o se differisce da n per unquadrato perfetto, il numero n e scomposto.

Criteri basati sulle radici quadrate dell’unita - cont

I Da quanto visto, e possibile definire un criterio dipseudoprimalita con i seguenti passi:

I Si scelgono a caso m numeri maggiori di n/2 e si elevano alquadrato (analogamente al metodo di Fermat).

I Se nessuno dei numeri e congruo all’unita il numero epseudoprimo.

I Se scopriamo una radice dell’unita possiamo decomporre n equindi decifrare RSA.

I Possiamo anche combinare i due metodi. Si eleva k alquadrato, poi se e congruo all’unita o se differisce da n per unquadrato perfetto, il numero n e scomposto.

Criteri basati sulle radici quadrate dell’unita - cont

I Da quanto visto, e possibile definire un criterio dipseudoprimalita con i seguenti passi:

I Si scelgono a caso m numeri maggiori di n/2 e si elevano alquadrato (analogamente al metodo di Fermat).

I Se nessuno dei numeri e congruo all’unita il numero epseudoprimo.

I Se scopriamo una radice dell’unita possiamo decomporre n equindi decifrare RSA.

I Possiamo anche combinare i due metodi. Si eleva k alquadrato, poi se e congruo all’unita o se differisce da n per unquadrato perfetto, il numero n e scomposto.

Criteri basati sulle radici quadrate dell’unita - cont

I Da quanto visto, e possibile definire un criterio dipseudoprimalita con i seguenti passi:

I Si scelgono a caso m numeri maggiori di n/2 e si elevano alquadrato (analogamente al metodo di Fermat).

I Se nessuno dei numeri e congruo all’unita il numero epseudoprimo.

I Se scopriamo una radice dell’unita possiamo decomporre n equindi decifrare RSA.

I Possiamo anche combinare i due metodi. Si eleva k alquadrato, poi se e congruo all’unita o se differisce da n per unquadrato perfetto, il numero n e scomposto.

Criteri basati sulle radici quadrate dell’unita - cont

I Da quanto visto, e possibile definire un criterio dipseudoprimalita con i seguenti passi:

I Si scelgono a caso m numeri maggiori di n/2 e si elevano alquadrato (analogamente al metodo di Fermat).

I Se nessuno dei numeri e congruo all’unita il numero epseudoprimo.

I Se scopriamo una radice dell’unita possiamo decomporre n equindi decifrare RSA.

I Possiamo anche combinare i due metodi. Si eleva k alquadrato, poi se e congruo all’unita o se differisce da n per unquadrato perfetto, il numero n e scomposto.

Soluzione esercizio Spia

I f(12)=6, f(10)=5, f(8)=4, f(6)=3, f(4)=7.

I La soluzione piu semplice e contare il numero di letterenecessario a scrivere il numero gridato dalla sentinella.

I dodici ha 6 lettere; dieci ne ha 5, otto ne ha quattro, sei ne hatre; ma quattro ne ha 7.

I Ovviamente esistono infiniti algoritmi che risolvono ilproblema, anche con algoritmi polinomiali (teorema diLagrange). Ma questo e sufficientemente semplice da esserericordato e calcolato rapidamente.

I L’esempio della spia mostra anche come un algoritmoapparentemente complicato (contare il numreo di lettere checompongono il numero) possa condurre, in casi particolari, asoluzioni semplici.

Soluzione esercizio Spia

I f(12)=6, f(10)=5, f(8)=4, f(6)=3, f(4)=7.

I La soluzione piu semplice e contare il numero di letterenecessario a scrivere il numero gridato dalla sentinella.

I dodici ha 6 lettere; dieci ne ha 5, otto ne ha quattro, sei ne hatre; ma quattro ne ha 7.

I Ovviamente esistono infiniti algoritmi che risolvono ilproblema, anche con algoritmi polinomiali (teorema diLagrange). Ma questo e sufficientemente semplice da esserericordato e calcolato rapidamente.

I L’esempio della spia mostra anche come un algoritmoapparentemente complicato (contare il numreo di lettere checompongono il numero) possa condurre, in casi particolari, asoluzioni semplici.

Soluzione esercizio Spia

I f(12)=6, f(10)=5, f(8)=4, f(6)=3, f(4)=7.

I La soluzione piu semplice e contare il numero di letterenecessario a scrivere il numero gridato dalla sentinella.

I dodici ha 6 lettere; dieci ne ha 5, otto ne ha quattro, sei ne hatre; ma quattro ne ha 7.

I Ovviamente esistono infiniti algoritmi che risolvono ilproblema, anche con algoritmi polinomiali (teorema diLagrange). Ma questo e sufficientemente semplice da esserericordato e calcolato rapidamente.

I L’esempio della spia mostra anche come un algoritmoapparentemente complicato (contare il numreo di lettere checompongono il numero) possa condurre, in casi particolari, asoluzioni semplici.

Soluzione esercizio Spia

I f(12)=6, f(10)=5, f(8)=4, f(6)=3, f(4)=7.

I La soluzione piu semplice e contare il numero di letterenecessario a scrivere il numero gridato dalla sentinella.

I dodici ha 6 lettere; dieci ne ha 5, otto ne ha quattro, sei ne hatre; ma quattro ne ha 7.

I Ovviamente esistono infiniti algoritmi che risolvono ilproblema, anche con algoritmi polinomiali (teorema diLagrange). Ma questo e sufficientemente semplice da esserericordato e calcolato rapidamente.

I L’esempio della spia mostra anche come un algoritmoapparentemente complicato (contare il numreo di lettere checompongono il numero) possa condurre, in casi particolari, asoluzioni semplici.

Soluzione esercizio Spia

I f(12)=6, f(10)=5, f(8)=4, f(6)=3, f(4)=7.

I La soluzione piu semplice e contare il numero di letterenecessario a scrivere il numero gridato dalla sentinella.

I dodici ha 6 lettere; dieci ne ha 5, otto ne ha quattro, sei ne hatre; ma quattro ne ha 7.

I Ovviamente esistono infiniti algoritmi che risolvono ilproblema, anche con algoritmi polinomiali (teorema diLagrange). Ma questo e sufficientemente semplice da esserericordato e calcolato rapidamente.

I L’esempio della spia mostra anche come un algoritmoapparentemente complicato (contare il numreo di lettere checompongono il numero) possa condurre, in casi particolari, asoluzioni semplici.

Nuovi esercizi

I Scrivere un codice Octave che esegua i crivello di Eratostene.

I Scrivere codice Octave che calcola una potenza di un numero(modulo n) nel minor numero di passi possibile.

I Scrivere un codice che verifichi la condizione dipseudoprimalita di Fermat con i primi n1/4 numeri primi.

Nuovi esercizi

I Scrivere un codice Octave che esegua i crivello di Eratostene.

I Scrivere codice Octave che calcola una potenza di un numero(modulo n) nel minor numero di passi possibile.

I Scrivere un codice che verifichi la condizione dipseudoprimalita di Fermat con i primi n1/4 numeri primi.

Nuovi esercizi

I Scrivere un codice Octave che esegua i crivello di Eratostene.

I Scrivere codice Octave che calcola una potenza di un numero(modulo n) nel minor numero di passi possibile.

I Scrivere un codice che verifichi la condizione dipseudoprimalita di Fermat con i primi n1/4 numeri primi.