Crivello di Luciano per trovare i numeri primi
CRIVELLO DI LUCIANO PER TROVARE I NUMERI PRIMI FORMULA GENERALE
|6Z-1|
DESCRIZIONE: Z = NUMERI INTERI Per ogni Z il risultato di questa formula produce un numero primo o il prodotto di due numeri primi o il prodotto di multipli di numeri primi. es. con Z=1 |(6*1-1)| = 6-1 = 5 es. con Z=-1 |(6*-1-1)| = -6-1= 7
es. con Z=2 |(6*2-1)| = 12-1 = 11 es. con Z=-2 |(6*-2-1)| = -12-1= 13 1° equazioni COL. C7 sono:Nx - ((6x)+1)* ((6y)+1)=0
e Nx - ((6x)-1)*((6y)-1)=0
Nx=49------49 - ((6x)+1)*((6y)+1)=0 x=1 y=1 c'è
la soluzione Nx non è primo
Nx=125----125 - ((6x)-1)*((6y)-1)=0 x=1 y=4 c'è
la soluzione Nx non è primo
Nx=283-----283 - ((6x)+1)*((6y)+1)=0 x=no y=no
non c'è soluzione intera il numero è primo
Nx=307-----307 - ((6x)-1)*((6y) -1)=0 x=no y=no
non c'è soluzione intera il numero è primo
2°equazione COL. C5 sono: Nx- ((6x)-1)*((6y)+1)=0
e Nx - ((6x)+1)*((6y)-1)=0
Nx=551-----551-((6x)-1)*((6y)+1)=0 x=5 y=3 c'è
la soluzione Nx non è primo
Nx=137----137-((6x)-1)*((6y)+1)=0 x=no y=no
non c'è soluzione intera il numero è primo
Si possono affermare con sicurezza alcune caratteristiche, che sono: 1) Moltiplicando i numeri della colonna C5 per quelli della colonna C7 il risultato cade nella colonna C5.
es. 5*7=35 es. 5*13=65 es. 11*7=77 ecc. ecc.
2) Moltiplicando i numeri nella colonna C5 * C5 oppure i numeri nella colonna C7*C7 i risultati cadono nella colonna C7
es. 5*5=25 es. 7*7=49 es. 5*11=55 es. 7*13=91 ecc. ecc.
3) I risultati della formula 2^n-1 o +1 cadono nelle colon. C5 o C7 in base se n e pari o dispari.
esempi, 2^4+1=17 2^3-1=7
quindi si può affermare che 2 elevata con una potenza pari + 1 il risultato cade nella colonna C5, mentre con potenza dispari -1 cade nella colonna C7. 4) Per quanto scritto sui punti 1 e 2 si posso individuare i numeri primi senza nessuna fattorizzazione.
es. C5*C5 cioè 5*5=25 poi C7*C7 cioè 7*7=49 poi C5*C7 cioè 5*7=35
questi sono i più piccoli numeri che abbiamo, bene per quanto sopra scritto il numero 25 è il più piccolo dei possibili risultati, pertanto sulla colonna C7 i numeri che precedono 25 non possono avere alcun fattore pertanto sono primi 7-13-19. Lo stesso dicasi del 35 pertanto sulla colonna C5 i numeri che precedono il 35 non possono avere fattori pertanto sono primi 5-11-17-23-29. Inoltre sulla colonna C7 dove cade 7*7=49, i numeri tra il numero 35, menzionato prima, ed il 49 non possono avere fattori pertanto sono primi 31-37-43. Questo avviene su tutti i numeri che genera la formula |6Z-1|. 5) Possiamo scrivere queste equazioni:
C5 - (C5*C7)=0 oppure C7 - (C7*C7)=0 oppure C7 - (C5*C5)=0
Ritornando alla formula principale:
Nx -((6Z-1)*(6Z-1))=0 se Nx non è primo, altrimenti se Nx è primo non c'è nessun Z che soddisfi l'equazione. es. 35-(5*7)=0 oppure es. 53-((6Z-1)*(6Z+1))=0 , 53 non ha multipli) pertanto non può essere 0 con qualsiasi valore di Z.
Di conseguenza il numero Nx dell'equazioni che non hanno soluzione x,y intere è primo.
Questo che segue è un programma in Python per controllare se il numero immesso è primo altrimenti scrive i multipli del numero, è completo di commenti.
ESEMPIO IN PYTHON:
- serve per calcolare il tempo necessario
from datetime import datetime
- inizializzo le due variabili
Nz=1 Nzz=1
- chiede di inserire un numero
Nx=input('inserisci il numero')
- stampa sul video il numero inserito
print (Nx)
- trasforma il numero inserito come intero, Python non ha limiti sui numeri interi
Ny=int(Nx)
- controlla il resto del numero inserito +1 e diviso 6
- questo per vedere su quale colonna cade il numero inserito
Nz=(Ny+1)%6 Nzz=(Ny-1)%6
- se Nz=0 il numero si trova sulla colonna del 5
if Nz==0:
Nr= int((Ny+1)/6)
- se Nzz=0 il numero si trova sulla colonna del 7
if Nzz==0:
Nr=int((Ny-1)/6)
- riepilogo sul video di questi dati:
print('(N+1)/6 se dovesse cadere sulla colonna del 5',(Ny+1)/6) # Ny+1 diviso 6 print('(N-1)/6 se dovesse cadere sulla colonna del 7',(Ny-1)/6) #Ny-1 diviso 6 print('(N+1)/6',Nz) #resto Nz print('(N-1)/6',Nzz) #resto Nzz print (' il numero capita sulla riga numero=',Nr) #il numero di riga dove capita il numero immesso
- inizio calcoli fattori colonna del 5
- legge il tempo attuale e lo stampa sul video
d=datetime.now() print ('leggo il tempo',d)
- se Nz=0 allora esegue i calcoli appropriati...
if Nz==0:
out=0 for i in range(Nr): #ciclo da 1 al numero di riga dove cade il numero inserito for ii in range(Nr): Nf=((6*i)-1)*((6*ii)+1) if Nf== Ny: print('fattore-1',((6*i)-1),'fattore-2',((6*ii)+1)) out=1 break if out==1: break
if Nzz==0:
out=0 for i in range(Nr): for ii in range(Nr): Nf=((6*i)+1)*((6*ii)+1) if Nf== Ny: print('fattore-1',((6*i)+1),'fattore-2',((6*ii)+1)) out=1 break Nf=((6*i)-1)*((6*ii)-1) if Nf== Ny: print('fattore-1',((6*i)-1),'fattore-2',((6*ii)-1)) out=1 break if out==1: break
dd=datetime.now() print (dd-d)
- IL RISULTATO
inserisci il numero 85849 85849 (N+1)/6 se dovesse cadere sulla colonna del 5 risultato = 14308.333333333334 (N-1)/6 se dovesse cadere sulla colonna del 7 risultato =14308.0 (N+1)/6 resto 2 (N-1)/6 resto 0
il numero capita sulla riga numero = 14308
leggo il tempo 2019-10-30 22:53:03.664062 1° fattore 293 2° fattore 293 0:00:05.051758 "tempo di calcolo"
Quando scrive che il numero cade sulla riga 14308 significa che Z=14308