Numeri primi nella forma a*K-b ed a*K+b
\(\displaystyle \)Se siete interessati a tale tipo di ricerche, vi potrà far piacere scaricare ed usare gratuitamente un calcolatore scritto in Java (richiede solo la presenza della popolarissima JVM). Non utilizza la forza bruta ma un crivello con calcolo dei composti (a differenza di quello di Eratostene che è una mappa ad esclusione sequenziale). E' una applicazione con firma certificata da società legata a Symantec e perciò nessun problema per la sicurezza.
I semplici passaggi sono:
1) scaricare in cartella nota sotto Documenti il software da http://www.vincs.it/VincSCalc
2) se non si è già in possesso della JVM, scaricarla da Sun/Oracle https://www.java.com/it/download/
3) doppio click su VincSCalc.jar
4) il software è ad uso gratuito ma, la prima volta, è necessario leggere la licenza, scorrendo verso il basso
5) dal menù principale scegliere il CalcSetting->DataType->BigInt
6) all'estrema destra della tastiera ci sono le funzioni \(\pi\)() "how many primes"
7a) si può inserire un numero x e la funzione \(\pi\)C(x) calcolerà il totale di numeri primi da 0 a x
7b) si può inserire un numero x e premere \(\pi\)C(x,y) immettendo poi y e premendo = calcolerà il totale di numeri primi nel range da x a y
8) in entrambi gli esempi precedenti nel pannello di memorie MAx verranno visualizzati i totali di numeri primi nella forma a*K-b ed a*K+b: il default dei parametri sono i canonici 6*K-1 ed 6*K+1 ma nel menù Params -> sezione Dirichlet potrete sbizzarrirvi (nota: a dispetto del nome Dirichlet, non controlla che le due costanti non abbiano primi in comune)
9) ... e tante altre cose
.
A esposizione per chiarimenti (qui nel forum od in privato tramite vincscalc@gmail.com).
.
VincS
I semplici passaggi sono:
1) scaricare in cartella nota sotto Documenti il software da http://www.vincs.it/VincSCalc
2) se non si è già in possesso della JVM, scaricarla da Sun/Oracle https://www.java.com/it/download/
3) doppio click su VincSCalc.jar
4) il software è ad uso gratuito ma, la prima volta, è necessario leggere la licenza, scorrendo verso il basso
5) dal menù principale scegliere il CalcSetting->DataType->BigInt
6) all'estrema destra della tastiera ci sono le funzioni \(\pi\)() "how many primes"
7a) si può inserire un numero x e la funzione \(\pi\)C(x) calcolerà il totale di numeri primi da 0 a x
7b) si può inserire un numero x e premere \(\pi\)C(x,y) immettendo poi y e premendo = calcolerà il totale di numeri primi nel range da x a y
8) in entrambi gli esempi precedenti nel pannello di memorie MAx verranno visualizzati i totali di numeri primi nella forma a*K-b ed a*K+b: il default dei parametri sono i canonici 6*K-1 ed 6*K+1 ma nel menù Params -> sezione Dirichlet potrete sbizzarrirvi (nota: a dispetto del nome Dirichlet, non controlla che le due costanti non abbiano primi in comune)
9) ... e tante altre cose
.
A esposizione per chiarimenti (qui nel forum od in privato tramite vincscalc@gmail.com).
.
VincS
Risposte
Java non trovo sia molto adatto ad applicazioni scientifiche. Seppur il tuo impegno è senza dubbio stato grande, non suggerirei il tuo software a persone interessate alla teoria dei numeri perché un software/linguaggio come PARI/GP risulta molto più pratico e potente.
Il tuo software come si compara con questo https://github.com/kimwalisch/primesieve ?
Il tuo software come si compara con questo https://github.com/kimwalisch/primesieve ?
Un altro piccolo commento: cosa ti serve usare un BigInt se fai calcoli al di sotto di \(10^{18}\) ? Al di sotto di questa cifra un long può andare benissimo. E al di sotto di \(10^8\) puoi usare un normalissimo int. Anzi usare un tipo come BigInt dovrebbe rallentarti i calcoli.
Ciao vict85, grazie veramente per l'interesse dimostrato. Volevo un calcolatore semplice da usare. Ho provato a fare un giro in quelli che tu mi hai consigliato. Il mio lo scarichi e cominci ad usarlo come un calcolatore ... e diventerà programmabile con degli script. E' anche flessibile in quanto,ad esempio, gli astronomi potranno fare calcoli con precisione arbitraria grazie all'integrazione della libreria ApFloat. Java gira su tre S.O. diversi con una unica compilazione/distribuzione (mi sa che anche PARI/GP). Un giorno riscriverò in C++ o C#. Il primesieve calcola contemporaneamente i numeri nella forma a*K+/-b? Per darti un'ordine di grandezza il mio calcola il totale dei primi nel range da 5000000 a 6000000 (ad esempio) e quanti di questi primi sono nella forma 14*k-1 e quanti di questi primi sono nella forma 14*K+1 (sempre ad esempio) in una manciata di secondi (rispettivamente 64336, 10747, 10770) su un relativamente vecchio PC. So che avrai poco tempo ma mi aiuteresti a fare un paio di prove comparative? BigInt per non darmi limiti ma seguirò il consiglio di usare il long quando gli input sono relativamente piccoli. Comunque grazie.