February 01, 2018 · Algoritmi Programmazione

Quel giorno in cui barai ad un test di primalità per finire prima

Tutto ebbe inizio con il seguente esercizio da svolgere:

Il candidato deve sviluppare un algoritmo per determinare se un numero è primo o meno e trovare tutti i numeri primi fino a 100.

Appena lessi il testo dell'esercizio un ghigno si presentò sulla mia faccia, era il ghigno di una persona che conosceva il test di Fermant e della posizione del primo Pseudoprimo (341). Cosciente del fatto che il programma era errato continuai imperterrito nel scrivere il seguente codice senza confrontarlo con il test AKS, per via del pattern di dati da testare:

return ( ( (int)pow(2,p) - 2) % p == 0)? 1 : 0;

Una volta finito il tutto e compilato senza errori il terminale mi mostrò i numeri primi minori di 100. Il programma venne preso per corretto ma sapevamo entrambi che era errato.

Da ciò mi resi conto di una cosa importantissima, la ricerca di velocità e ottimizzazzione ad ogni costo nel lungo periodo porta solo sventure visto che quando passerò come argomento al programma uno pseudoprimo esso mi darà:

errore

AKA: Così nacque meltdown e spectre.

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus