Generazione di un numero primo grande

r = Random[Integer, {(10^12), (10^13)}]
PrimeQ[%]

Ricerca del più piccolo numero  primo più grande di r

primoSuccessivo[num_] := 
      Module[{n}, If[EvenQ[num], n = num + 1, n = num]; 
        While[! PrimeQ[n], n = n + 2]; n]
ps = primoSuccessivo[r]
PrimeQ[%]

Ricerca del più grande numero primo più piccolo di r

primoPrecedente[num_] := 
      Module[{n}, If[EvenQ[num], n = num - 1, n = num]; 
        While[! PrimeQ[n], n = n - 2]; n]
pp = primoPrecedente[r]
PrimeQ[%]

Controllo sulla distribuzione dei numeri primi

pp1 = primoPrecedente[pp - 2]
PrimeQ[%]
ps1 = primoSuccessivo[ps + 2]
PrimeQ[%]
d1 = pp - pp1
d2 = ps - pp
d3  = ps1 - ps
N[(d1 + d2 + d3)/3]
N[Log[r]]

Controllo del teorema di Dirchlet

x = 12345
px = Prime[x]

Px = IntegerPart[x*Log[x]]