Una verifica veloce che 2017 è primo

b7e

John D. Cook mi sta traviando! Dovrei risolvere un caso che mi va in errore in modo non ancora capito [agg.: no, ci sono] ma sono capitato in un suo post, questo: Three proofs that 2017 is prime.

Quella che m’intriga è la terza, quella che usa il teorema di Wilson. Uhmmm… –sapete com’è– OK, c’è la Wiki.

C’è un motivo atavico per cui non so resistere a queste cose: il fattoriale di 2016 dev’essere piuttosto grande, capace che ha 5789 cifre (in forma decimale) e per me che vengo dal Fortran c’è sempre in agguato l’overflow per 32767 (con il IV, 4 bytes, con segno) o 2’147’483’647 (con il 77, 4 bytes, con segno).

Per cui devo provare 😀

Quando devo fare un calcolo veloce uso calc:

calc

ma c’è Python:

py3

e Racket:

rkt

Tutti d’accordo. Ma chissà se hanno fatto il loro dovere? Per saperlo basta scrivere il risultato su un file e verificarne la lunghezza.

Per calc uso calc '2016! + 1' > calc.r direttamente nel terminale. Con Python aggiungo, nella REPL le tre istruzioni seguenti:

t = open("py3.r", "w")
print(x, file=t)
t.close()

Nella REPL di Racket ottengo lo stesso risultato con:

(define out (open-output-file "rkt.r"))
(write x out)
(close-output-port out)

Ottengo 3 file lunghi. Lunghi quanto? dovrebbe essere len(str(factorial(2016) + 1)) (con Python dopo aver importato factorial). Difatti:

confronto

Nota: Racket non inserisce il mew-line finale. L’opzione -b ignora le differenze nel numero degli spazi.
:mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Trackback

  • Precisione arbitraria | Ok, panico su 14 gennaio 2017 alle 08:36

    […] chiarirmi un po’ di cose relative al post sulla primalità di 2017. Come già detto (più volte) temo costantemente l’overflow (chissà […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: