Generatore di numeri primi
Generatore di numeri primi
Inserendo al posto di p un numero primo nella forma 12*x+5
se per m=0 oppure n=0 questa ammette soluzioni intere
allora P è primo
$(p+1)/2+24*m*n+6*m+6*n+1=(2*(3*m+n+1))^2$
,
$24*m*n+6*m+6*n+1=3*(3*P-3)/6+1$
Inserendo al posto di p un numero primo nella forma 12*x+5
se per m=0 oppure n=0 questa ammette soluzioni intere
allora P è primo
$(p+1)/2+24*m*n+6*m+6*n+1=(2*(3*m+n+1))^2$
,
$24*m*n+6*m+6*n+1=3*(3*P-3)/6+1$
Risposte
Questi giorni sono occupato, ci torno sopra quando avrò tempo. Comunque ripeto che quella che hai scritto non è una dimostrazione, sembrano piuttosto righe di codice, ed è molto difficile decifrare di cosa stai parlando.
"Martino":
Questi giorni sono occupato, ci torno sopra quando avrò tempo. Comunque ripeto che quella che hai scritto non è una dimostrazione, sembrano piuttosto righe di codice, ed è molto difficile decifrare di cosa stai parlando.
grazie
EDIT:
Intanto ho fatto un altro test della congettura fino a $100000$ ed è tutto ok
Lascio il sorgente
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ long long int n,i,mcd,p,q,P=0,fattore,mom; long long int V[17402][3]; n = insert_array(V); // Inserimento degli elementi nell'array mergeSort(V, 0, n-1); // Chiamata alla funzione merge sort for (i=0; P<100000; i++) { P=V[i][0]; P=2*P-1; p=V[i][1]; p=4*p+1; q=V[i][2]; q=4*q+1; MCD(p,q,&mcd); if ((mcd== 1 )&& ((V[i][0]!=V[i-1][0]) && (V[i][0]!=V[i+1][0]))){ if (P%12==5){ printf("id**************************%d \n",i); printf("primo***********************************%lli \n",P); } printf("\n"); mom=V[i][0]; mom =2*mom-1; fattore=3; while (fattore<=sqrt(mom)){ if (P%12==5){ if(mom%fattore==0){ printf("12*x+5=%lli non è primo \n",P); int w;scanf("%d",&w); break; } } fattore=fattore+2; } } } scanf ("&lli",&i); return 0; } int MCD (long long int n1,long long int n2 ,long long int * mcd) /* calcola il massimo comun divisore di due interi * usando il metodo di Euclide */ { long long int resto, a, b; if(n1<0){n1=0-n1;} if(n2<0){n2=0-n2;} if(n1>=n2){ a = n1; b = n2; }else{ a = n2; b = n1; } while (b > 0) { resto = a % b; a = b; b = resto; } *mcd=a; } // Funzione per l'inserimento degli elementi nell'array int insert_array(long long int V[17402][3]) { long long int n, i=0,a=-113,b=-38,p; n=17402; while(i<17402) { while (a<=112){ b=-38; while (b<=38){ V[i][0]=36*b*b+18*b+4*a*a+2*a+3; V[i][1]=a; V[i][2]=b; b++; i++; } a++; } } return(n); } // Funzione per fondere due sotto-vettori ordinati in un unico vettore ordinato void merge(long long int a[17402][3], long long int p, long long int q, long long int r) { long long int i, j, k=0, b[17402][3]; i = p; j = q+1; while (i<=q && j<=r) { if (a[i][0]<a[j][0]) { b[k][0] = a[i][0]; b[k][1] = a[i][1]; b[k][2] = a[i][2]; i++; } else { b[k][0] = a[j][0]; b[k][1] = a[j][1]; b[k][2] = a[j][2]; j++; } k++; } while (i <= q) { b[k][0] = a[i][0]; b[k][1] = a[i][1]; b[k][2] = a[i][2]; i++; k++; } while (j <= r) { b[k][0] = a[j][0]; b[k][1] = a[j][1]; b[k][2] = a[j][2]; j++; k++; } for (k=p; k<=r; k++){ a[k][0] = b[k-p][0]; a[k][1] = b[k-p][1]; a[k][2] = b[k-p][2]; } return; } // Funzione principale per eseguire il merge sort int mergeSort(long long int a[17402][3],long long int p,long long int r) { long long int q; if (p < r) { q = (p+r)/2; mergeSort(a, p, q); // Ordina il sotto-vettore sinistro mergeSort(a, q+1, r); // Ordina il sotto-vettore destro merge(a, p, q, r); // Unisci i sotto-vettori ordinati } return 0; }
Ho capito come si dimostra se la congettura $mcd(4*n+1,4*m+1)!=1$ se è vera o falsa
solve integer $36*m^2+18*m+4*n^2+2*n+3=(12*x+5+1)/2$
guardare le soluzioni nell'immagine

è un lavoro certosino che nei prossimi giorni farò
Osserviamo la prima soluzione
$x=54*c^2+9*c+6*d^2+d$ ; $m=3*c$ ; $n=3*d$
ed il fatto che questa
$36*m^2+18*m+4*n^2+2*n+3=(p+1)/2$
è equivalente a questa
$(3*(4*m+1))^2+(4*n+1)^2=2*p$
quindi
se $2*p$ è diviso da
$(4*m+1)+(4*n+1)$
e da
$(4*m+1)-(4*n+1)$
significa che p non è primo se $mcd(4*n+1,4*m+1)!=1$
e la prima soluzione lo conferma guardate
$2*(12*(54*c^2+9*c+6*d^2+d)+5)/(4*(3*c)+1+4*(3*d)+1)$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)-54*2*c(4*(3*c)+1+4*(3*d)+1)+108*d*(4*(3*c)+1+4*(3*d)+1)=10*(4*3*d+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)-12*d*(4*(3*c)+1+4*(3*d)+1)+12*c*(4*(3*c)+1+4*(3*d)+1)=10*(4*3*c+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)/(4*(3*c)+1-(4*(3*d)+1))$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)-2*54*c*(4*(3*c)+1-(4*(3*d)+1))-2*54*d*(4*(3*c)+1-(4*(3*d)+1))-18*(4*(3*c)+1-(4*(3*d)+1))=10*(4*3*d+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)+12*d*(4*(3*c)+1-(4*(3*d)+1))+12*c*(4*(3*c)+1-(4*(3*d)+1))+2*(4*(3*c)+1-(4*(3*d)+1))=10*(4*3*c+1)^2$
Le altre le provo nei prossimi giorni
EDIT1:
Anche la seconda soluzione lo conferma
$x=54*c^2+9*c+6*d^2+5*d+1$ ; $m=3*c$ ;$n=3*d+1$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)/(4*(3*c)+1+4*(3*d+1)+1)$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)-54*2*c*(4*(3*c)+1+4*(3*d+1)+1)+54*2*d*(4*(3*c)+1+4*(3*d+1)+1)+36*(4*(3*c)+1+4*(3*d+1)+1)=10*(4*(3*d+1)+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)-12*d*(4*(3*c)+1+4*(3*d+1)+1)+12*c*(4*(3*c)+1+4*(3*d+1)+1)-4*(4*(3*c)+1+4*(3*d+1)+1)=10*(12*c+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)/(4*(3*c)+1-(4*(3*d+1)+1))$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)-54*2*c*(4*(3*c)+1-(4*(3*d+1)+1))-2*54*d*(4*(3*c)+1-(4*(3*d+1)+1))-54*(4*(3*c)+1-(4*(3*d+1)+1))==10*(4*(3*d+1)+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)+12*d*(4*(3*c)+1-(4*(3*d+1)+1))+12*c*(4*(3*c)+1-(4*(3*d+1)+1))+6*(4*(3*c)+1-(4*(3*d+1)+1))=10*(12*c+1)^2$
EDIT2:
Anche la terza soluzione lo conferma
$x=54*c^2+45*c+6*d^2+d+9$ ; $m=3*c+1$ ; $n=3*d$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)/(4*(3*c+1)+1+4*(3*d)+1)$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)-54*2*c*(4*(3*c+1)+1+4*(3*d)+1)+108*d*(4*(3*c+1)+1+4*(3*d)+1)-36*(4*(3*c+1)+1+4*(3*d)+1)=10*(12*d+1)^2$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)-12*d*(4*(3*c+1)+1+4*(3*d)+1)+12*c*(4*(3*c+1)+1+4*(3*d)+1)+4*(4*(3*c+1)+1+4*(3*d)+1)=10*(4*(3*c+1)+1)^2$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)/(4*(3*c+1)+1-(4*(3*d)+1))$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)-108*c*(4*(3*c+1)+1-(4*(3*d)+1))-108*d*(4*(3*c+1)+1-(4*(3*d)+1))-54*(4*(3*c+1)+1-(4*(3*d)+1))=10*(12*d+1)^2$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)+12*d*(4*(3*c+1)+1-(4*(3*d)+1))+12*c*(4*(3*c+1)+1-(4*(3*d)+1))+6*(4*(3*c+1)+1-(4*(3*d)+1))=10*(4*(3*c+1)+1)^2$
EDIT3:
Se fossero dimostrate le altre tre soluzioni significherebbe che $mcd(4*n+1,4*m+1,p)!=1$ se $p$ non è primo
solve integer $36*m^2+18*m+4*n^2+2*n+3=(12*x+5+1)/2$
guardare le soluzioni nell'immagine

è un lavoro certosino che nei prossimi giorni farò
Osserviamo la prima soluzione
$x=54*c^2+9*c+6*d^2+d$ ; $m=3*c$ ; $n=3*d$
ed il fatto che questa
$36*m^2+18*m+4*n^2+2*n+3=(p+1)/2$
è equivalente a questa
$(3*(4*m+1))^2+(4*n+1)^2=2*p$
quindi
se $2*p$ è diviso da
$(4*m+1)+(4*n+1)$
e da
$(4*m+1)-(4*n+1)$
significa che p non è primo se $mcd(4*n+1,4*m+1)!=1$
e la prima soluzione lo conferma guardate
$2*(12*(54*c^2+9*c+6*d^2+d)+5)/(4*(3*c)+1+4*(3*d)+1)$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)-54*2*c(4*(3*c)+1+4*(3*d)+1)+108*d*(4*(3*c)+1+4*(3*d)+1)=10*(4*3*d+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)-12*d*(4*(3*c)+1+4*(3*d)+1)+12*c*(4*(3*c)+1+4*(3*d)+1)=10*(4*3*c+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)/(4*(3*c)+1-(4*(3*d)+1))$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)-2*54*c*(4*(3*c)+1-(4*(3*d)+1))-2*54*d*(4*(3*c)+1-(4*(3*d)+1))-18*(4*(3*c)+1-(4*(3*d)+1))=10*(4*3*d+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+d)+5)+12*d*(4*(3*c)+1-(4*(3*d)+1))+12*c*(4*(3*c)+1-(4*(3*d)+1))+2*(4*(3*c)+1-(4*(3*d)+1))=10*(4*3*c+1)^2$
Le altre le provo nei prossimi giorni
EDIT1:
Anche la seconda soluzione lo conferma
$x=54*c^2+9*c+6*d^2+5*d+1$ ; $m=3*c$ ;$n=3*d+1$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)/(4*(3*c)+1+4*(3*d+1)+1)$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)-54*2*c*(4*(3*c)+1+4*(3*d+1)+1)+54*2*d*(4*(3*c)+1+4*(3*d+1)+1)+36*(4*(3*c)+1+4*(3*d+1)+1)=10*(4*(3*d+1)+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)-12*d*(4*(3*c)+1+4*(3*d+1)+1)+12*c*(4*(3*c)+1+4*(3*d+1)+1)-4*(4*(3*c)+1+4*(3*d+1)+1)=10*(12*c+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)/(4*(3*c)+1-(4*(3*d+1)+1))$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)-54*2*c*(4*(3*c)+1-(4*(3*d+1)+1))-2*54*d*(4*(3*c)+1-(4*(3*d+1)+1))-54*(4*(3*c)+1-(4*(3*d+1)+1))==10*(4*(3*d+1)+1)^2$
$2*(12*(54*c^2+9*c+6*d^2+5*d+1)+5)+12*d*(4*(3*c)+1-(4*(3*d+1)+1))+12*c*(4*(3*c)+1-(4*(3*d+1)+1))+6*(4*(3*c)+1-(4*(3*d+1)+1))=10*(12*c+1)^2$
EDIT2:
Anche la terza soluzione lo conferma
$x=54*c^2+45*c+6*d^2+d+9$ ; $m=3*c+1$ ; $n=3*d$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)/(4*(3*c+1)+1+4*(3*d)+1)$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)-54*2*c*(4*(3*c+1)+1+4*(3*d)+1)+108*d*(4*(3*c+1)+1+4*(3*d)+1)-36*(4*(3*c+1)+1+4*(3*d)+1)=10*(12*d+1)^2$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)-12*d*(4*(3*c+1)+1+4*(3*d)+1)+12*c*(4*(3*c+1)+1+4*(3*d)+1)+4*(4*(3*c+1)+1+4*(3*d)+1)=10*(4*(3*c+1)+1)^2$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)/(4*(3*c+1)+1-(4*(3*d)+1))$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)-108*c*(4*(3*c+1)+1-(4*(3*d)+1))-108*d*(4*(3*c+1)+1-(4*(3*d)+1))-54*(4*(3*c+1)+1-(4*(3*d)+1))=10*(12*d+1)^2$
$2*(12*(54*c^2+45*c+6*d^2+d+9)+5)+12*d*(4*(3*c+1)+1-(4*(3*d)+1))+12*c*(4*(3*c+1)+1-(4*(3*d)+1))+6*(4*(3*c+1)+1-(4*(3*d)+1))=10*(4*(3*c+1)+1)^2$
EDIT3:
Se fossero dimostrate le altre tre soluzioni significherebbe che $mcd(4*n+1,4*m+1,p)!=1$ se $p$ non è primo
Niente, non ci si riesce
Il problema è che lui si impegna veramente tanto ma non si accorge che si trova in un vicolo cieco

$36*m^2+18*m+4*n^2+2*n+3=(p+1)/2 $
$p=(72*m^2+36*m+8*n^2+4*n+5)$
$(72*m^2+36*m+8*n^2+4*n+5) mod (4*m+1+4*n+1)$
$(72*m^2+36*m+8*n^2+4*n+5)-18*m*(4*m+1+4*n+1)+18*n*(4*m+1+4*n+1)=5*(4*n+1)^2$
$(72*m^2+36*m+8*n^2+4*n+5)-2*n*(4*m+1+4*n+1)+2*m*(4*m+1+4*n+1)=5*(4*m+1)^2$
$(72*m^2+36*m+8*n^2+4*n+5) mod (4*m+1-(4*n+1))$
$(72*m^2+36*m+8*n^2+4*n+5)-18*m*(4*m+1-(4*n+1))-18*n*(4*m+1-(4*n+1))-9*(4*m+1-(4*n+1))=5*(4*n+1)^2$
$(72*m^2+36*m+8*n^2+4*n+5)+2*n*(4*m+1-(4*n+1))+2*m*(4*m+1-(4*n+1))+1*(4*m+1-(4*n+1))=5*(4*m+1)^2$
solve integer $36*m^2+18*m+4*n^2+2*n+3=(12*x+5+1)/2$
$m$ può assumere tutti i valori
$n$ non può assumere i valori $n mod 3 = 2$
quindi dovrebbe essere possibile creare un generatore di non tutti i numeri primi nella forma $12*x+5$
eliminando $m=0$ ed $n=0$ ed $n mod 3 =2$ ed i numeri ove $mcd(4*n+1,4*m+1)!=1$
Edit: NO NON FUNZIONA questo sopra
$p=(72*m^2+36*m+8*n^2+4*n+5)$
$(72*m^2+36*m+8*n^2+4*n+5) mod (4*m+1+4*n+1)$
$(72*m^2+36*m+8*n^2+4*n+5)-18*m*(4*m+1+4*n+1)+18*n*(4*m+1+4*n+1)=5*(4*n+1)^2$
$(72*m^2+36*m+8*n^2+4*n+5)-2*n*(4*m+1+4*n+1)+2*m*(4*m+1+4*n+1)=5*(4*m+1)^2$
$(72*m^2+36*m+8*n^2+4*n+5) mod (4*m+1-(4*n+1))$
$(72*m^2+36*m+8*n^2+4*n+5)-18*m*(4*m+1-(4*n+1))-18*n*(4*m+1-(4*n+1))-9*(4*m+1-(4*n+1))=5*(4*n+1)^2$
$(72*m^2+36*m+8*n^2+4*n+5)+2*n*(4*m+1-(4*n+1))+2*m*(4*m+1-(4*n+1))+1*(4*m+1-(4*n+1))=5*(4*m+1)^2$
solve integer $36*m^2+18*m+4*n^2+2*n+3=(12*x+5+1)/2$
$m$ può assumere tutti i valori
$n$ non può assumere i valori $n mod 3 = 2$
quindi dovrebbe essere possibile creare un generatore di non tutti i numeri primi nella forma $12*x+5$
eliminando $m=0$ ed $n=0$ ed $n mod 3 =2$ ed i numeri ove $mcd(4*n+1,4*m+1)!=1$
Edit: NO NON FUNZIONA questo sopra
E' proprio impenetrabile..
"megas_archon":
E' proprio impenetrabile..
no non funziona
EDIT:
il doppio di un numero primo nella forma 12*x+5 si scrive in modo unico come somma di due quadrati
È pazzesco, sembra (è) un dialogo tra sordi
"P_1_6":
il doppio di un numero primo nella forma 12*x+5 si scrive in modo unico come somma di due quadrati
Si’ questo è ovvio ed è vero più in generale per primi congrui ad 1 modulo 4. Quindi?
"hydro":
[quote="P_1_6"]
il doppio di un numero primo nella forma 12*x+5 si scrive in modo unico come somma di due quadrati
Si’ questo è ovvio ed è vero più in generale per primi congrui ad 1 modulo 4. Quindi?[/quote]
Quindi la dimostrazione che ho fatto può essere sostituita con quella che dimostra questo fatto
Relativamente a questo post non OFFTOPIC
per alcuni numeri fattorizzabili $N=12*x+5=a^2+b^2$
dove conosciamo $a$ e/o $b$ allora la fattorizzazione avviene in tempo polinomiale
esempio $N=221=a^2+b^2=(-11)^2+(-10)^2$
$N=221$
,
$b^2=(d-a-1)*(d+a)$
,
$N=a^2+b^2$
,
$N=p*(2*d-p)$
,
$d=36*m^2+18*m+4*n^2+2*n+3$
,
$a=24*m*n+6*m+6*n+1$
,
$b=2*(3*m+n+1)*(6*m-2*n+1)$
,
$a=-11$
$-> $
$p=13$
Alcuni numeri di questo tipo sono:
$65,221,425,725,1025,1073,1961,2501,3125,...........$
https://www.academia.edu/120768905/Poly ... a_and_or_b
EDIT1:
se $(2*a+1)/3$ è primo non serve conoscere $a$ e\o $b$ perchè sicuramente $n=0$ o $m=0$
,
però se $(2*a+1)/3$ non è primo, può anche verificarsi che $n=0$ o $m=0$
ed un'altra cosa ci sono altri numeri al di fuori di $12*x+5$
per alcuni numeri fattorizzabili $N=12*x+5=a^2+b^2$
dove conosciamo $a$ e/o $b$ allora la fattorizzazione avviene in tempo polinomiale
esempio $N=221=a^2+b^2=(-11)^2+(-10)^2$
$N=221$
,
$b^2=(d-a-1)*(d+a)$
,
$N=a^2+b^2$
,
$N=p*(2*d-p)$
,
$d=36*m^2+18*m+4*n^2+2*n+3$
,
$a=24*m*n+6*m+6*n+1$
,
$b=2*(3*m+n+1)*(6*m-2*n+1)$
,
$a=-11$
$-> $
$p=13$
Alcuni numeri di questo tipo sono:
$65,221,425,725,1025,1073,1961,2501,3125,...........$
https://www.academia.edu/120768905/Poly ... a_and_or_b
EDIT1:
se $(2*a+1)/3$ è primo non serve conoscere $a$ e\o $b$ perchè sicuramente $n=0$ o $m=0$
,
però se $(2*a+1)/3$ non è primo, può anche verificarsi che $n=0$ o $m=0$
ed un'altra cosa ci sono altri numeri al di fuori di $12*x+5$
"P_1_6":
ho testato a mano fino a $1001$
ed ho notato che
se $12*x+5$ è primo ci sarà una sola soluzione
se $12*x+5$ non è primo
o non ci sono soluzioni
o ha più di una soluzione
o se ne ha una $(4*n+1)*(4*m+1)=S*T^2$
quest'ultima cosa può significare due cose (avrei bisogno di un campione maggiore)
o $mcd(4*n+1,4*m+1)!=1$
o $(4*n+1)=s*t^2$ o $(4*m+1)=s*t^2$
se sei un programmatore potresti verificare questo?
se la congettura è corretta
allora possiamo cercare in un certo range piccolo quanto vogliamo
esempio
supponiamo di voler vedere se $9929$ è primo
solve $(9929000000000000000001/1000000000000000000+1)/2>36*m^2+18*m+4*n^2+2*n+3>(9928999999999999999999/1000000000000000000+1)/2$
$->$
$-11 <= m <= 11$
$(9929+1)/2=36*m^2+18*m+4*n^2+2*n+3$
la sola soluzione intera in $-11 <= m <= 11$ è $m=-3$ ed $n=34$
$mcd(4*(-3)+1,4*34+1)=1$
quindi $9929$ è primo
abbiamo impiegato 23 passi
non so quanto efficiente possa essere questa cosa però a scopo educativo è interessante
Credo la migliore implementazione possibile sia:
- prendo due numeri $min$ e $max$ in input (che sono le estremità dell'intervallo I dove voglio cercare primi)
- creo una matrice $M[(max-min)/12][3]$ e la inizializzo a $0$
- mi calcolo l'intervallo di $m$ e per ogni $m$ mi calcolo l'intervallo di $n$
- quindi per ogni coppia $(m,n)$ nei rispettivi range mi calcolo $P=2*d-1=2*(36*m^2+18*m+4*n^2+2*n+3)-1$
- vado ad incrementare di $1$ , $M[(P-min)/12][0]$ , memorizzo $m$ in $M[(P-min)/12][1]$ , memorizzo $n$ in $M[(P-min)/12][2]$
- quando ho finito scorrerò la matrice e se questo valore $M[0] == 1$ farò $GCD(4*(M[1])+1,4*(M[2])+1)$ e se $MCD ==1$ stamperò $P=min+12*i$
Con questa implementazione impiegherò $(max-min)/12+D+(p+c)*(GCD)$ dove $D$ sono i doppioni e $p$ i numeri primi nell'interavllo e $c$ i numeri che si scrivono in modo unico ma che hanno $mcd!=1$
che ne pensate?
- prendo due numeri $min$ e $max$ in input (che sono le estremità dell'intervallo I dove voglio cercare primi)
- creo una matrice $M[(max-min)/12][3]$ e la inizializzo a $0$
- mi calcolo l'intervallo di $m$ e per ogni $m$ mi calcolo l'intervallo di $n$
- quindi per ogni coppia $(m,n)$ nei rispettivi range mi calcolo $P=2*d-1=2*(36*m^2+18*m+4*n^2+2*n+3)-1$
- vado ad incrementare di $1$ , $M[(P-min)/12][0]$ , memorizzo $m$ in $M[(P-min)/12][1]$ , memorizzo $n$ in $M[(P-min)/12][2]$
- quando ho finito scorrerò la matrice e se questo valore $M[0] == 1$ farò $GCD(4*(M[1])+1,4*(M[2])+1)$ e se $MCD ==1$ stamperò $P=min+12*i$
Con questa implementazione impiegherò $(max-min)/12+D+(p+c)*(GCD)$ dove $D$ sono i doppioni e $p$ i numeri primi nell'interavllo e $c$ i numeri che si scrivono in modo unico ma che hanno $mcd!=1$
che ne pensate?
Per chi mastica anche informatica
L'ho implementato con la libreria gmp-6.3.0
https://github.com/Piunosei/lepore_sieve_4/tree/main
L'ho implementato con la libreria gmp-6.3.0
https://github.com/Piunosei/lepore_sieve_4/tree/main
Credo che questo si possa migliorare
Calcolando direttamente le coppie $(m,n)$ valide risolvendo questa
$(max+1)/2>=36*m^2+18*m+4*n^2+2*n+3>=(min+1)/2$
"P_1_6":
- mi calcolo l'intervallo di $m$ e per ogni $m$ mi calcolo l'intervallo di $n$
Calcolando direttamente le coppie $(m,n)$ valide risolvendo questa
$(max+1)/2>=36*m^2+18*m+4*n^2+2*n+3>=(min+1)/2$

"P_1_6":
Per chi mastica anche informatica
L'ho implementato con la libreria gmp-6.3.0
https://github.com/Piunosei/lepore_sieve_4/tree/main
la complessità dell'algorimo che ho scritto è $O(sqrt(max))$ in particolare è $(sqrt(2*max-1)-3)/6*j+a*GCD$ dove $j$ in media è un po più grande di 1 [a certe condizioni], dove $a$ sono i potenziali primi che si scrivono in modo unico e $GCD$ il temo per il calcolo del massimo comun divisore
E' vero il temp dell'algoritmo AKS è $O((log p)^6)$ però per trovarne uno mentre per l'algoritmo che ho scritto io o ne trovi $1$ o $100000$ è sempre O(sqrt(max)) cambia poco [vedi immagini]
Quindi $sqrt(max)
$C>sqrt(max)/[(log max)^6]$ il mio crivello è più veloce di $AKS$
"Martino":
Questi giorni sono occupato, ci torno sopra quando avrò tempo. Comunque ripeto che quella che hai scritto non è una dimostrazione, sembrano piuttosto righe di codice, ed è molto difficile decifrare di cosa stai parlando.
qui l'ho scritto spero abbastanza bene [aspetto tue nuove]
https://www.academia.edu/121400171/Siev ... y_interval