La Fattorizzazione degli interi: il metodo 4n+1, 4n+3                              Di Cristiano Armellini (cristiano.armel...
Ogni equazione di II grado dipende dal parametro k intero positivo o negativo. Risolviamo tali equazioniponendo ovviamente...
Linguaggio C++ (4n+1)#include <cstdlib>#include <iostream>#include <math.h>using namespace std;int main(int argc, char *ar...
Un’altra applicazione del fatto che ogni numeri primo si può sempre esprimere nella forma 4n+1 oppure4n+3 è quella di cerc...
Riprendiamo il concetto che (qui a differenza di sopra p, q sono due numeri primi)                                        ...
Upcoming SlideShare
Loading in...5
×

La fattorizzazione degli interi metodo 4n+1, 4n+3

587

Published on

la fattorizzazione metodi particolari

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
587
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

La fattorizzazione degli interi metodo 4n+1, 4n+3

  1. 1. La Fattorizzazione degli interi: il metodo 4n+1, 4n+3 Di Cristiano Armellini (cristiano.armellini@alice.it)Sia dato il numero dispari p = x y con x, y numeri primi anche molto grandi da trovare. Sappiamo che ogninumero primo si può esprimere nella forma 4n+1 oppure 4m+3 dove m , n sono opportuni numeri interipositivi. Quindi , sulla base di questa semplice osservazione, consideriamo i seguenti casi per ottenere delleequazioni di II grado dove n = n(k): 1) , 16 2) , 16 3) , 16 4) , 16Ove k può essere un intero sia positivo che negativo. In particolare se ipotizziamo m > n k > 0 mentre sem < n k <0 basterà modificare le formule precedenti ponendo –k al posto di k, cioè in questo caso (k>0): 1) , 16 2) , 16 3) , 16 4) , 16
  2. 2. Ogni equazione di II grado dipende dal parametro k intero positivo o negativo. Risolviamo tali equazioniponendo ovviamente il delta > 0 per l’esistenza nel campo reale della radici: questo ci indicherà ulterioricondizioni per il parametro k. Facciamo variare k fino a quando non troviamo n intero positivo: questo cipermetterà di ottenere m quindi i due fattori x, y del numero p.Questa proprietà ci permette di trovare i fattori molto rapidamente.Avremmo anche potuto considerare per k > 0 1) , 8 2) , 8Cioè analogamente a quanto visto precedentemente (k > 0) 1) , 8 2) , 8Ovvero p è il prodotto di un numero dispari per un numero del tipo 4n+1 oppure 4m+3 ma l’algoritmosarebbe risultato più lento in generale. Prendendo in considerazione proprio questi ultimi casi scriviamo ilcodice sorgente in C++ di un programma di fattorizzazione ricordando però che i metodi descritti all’inizio diquesto articolo sono più veloci.
  3. 3. Linguaggio C++ (4n+1)#include <cstdlib>#include <iostream>#include <math.h>using namespace std;int main(int argc, char *argv[]){double m, n, p, k, x, y;long i = 0;cout << "Inserisci il numero da fattorizzare ";cin >> p;k=0;do{n= (-8*k-6+sqrt(pow(8*k+6,2)-32*(2*k+1-p)))/16;k = k+1;i = i+1;} while (n!= int(n));x = 4*n+1;cout << x << "n";cout << p/x<<"n";cout << "passaggi" << i << "n";; system("PAUSE"); return EXIT_SUCCESS;}Linguaggio C++ (4m+3)#include <cstdlib>#include <iostream>#include <math.h>using namespace std;int main(int argc, char *argv[]){double m, n, p, k, x, y;long i = 0;cout << "Inserisci il numero da fattorizzare ";cin >> p;k=0;do{n= (-8*k-10+sqrt(pow(8*k+10,2)-32*(6*k+3-p)))/16;k = k+1;i = i+1;} while (n!= int(n));x = 4*n+3;cout << x << "n";cout << p/x<<"n";cout << "passaggi" << i << "n";; system("PAUSE"); return EXIT_SUCCESS;}
  4. 4. Un’altra applicazione del fatto che ogni numeri primo si può sempre esprimere nella forma 4n+1 oppure4n+3 è quella di cercare di fattorizzare un numero p calcolando il MCD(p, 4n+1) e il MCD(p, 4n+3) facendovariare n finché uno dei due MCD è diverso dall’unità. Ovvero in termini informatici (usando il linguaggioPARI/GP):{fact(p) =n = 2;while (gcd(p, 4*n+1) == 1 && gcd(p, 4*n+3) == 1, n = n+1);print(gcd(p, 4*n+1));print(gcd(p, 4*n+3));}Possiamo a questo punto studiare anche un metodo per verificare l’ipotesi di Goldbach (ogni numero pari èla somma di due primi). Per le considerazioni fatte precedentemente abbiamo solo 3 casi possibili: , 4 , 4 , 4Facendo variare m in tutti e 3 i casi si ottiene il corrispondente valore di n e quindi si verifica per questivalori di n, m di aver ottenuto i due numeri primi cercati altrimenti si passa ai valori successivi. Ovviamentem deve essere scelto tra i valori per cui 4n > 0Dalle equazioni precedenti osserviamo che:Ricordiamo che se allora per cui , con a intero
  5. 5. Riprendiamo il concetto che (qui a differenza di sopra p, q sono due numeri primi) 4 1 4 1 4 2 4 1 4 3 4 4 4 3 4 3 4 6Sappiamo che 0 dove , quindi se 0 e sostituendo nelleprecedenti tre relazioni otteniamo: 4 2 0 4 4 0 4 6 0Anche qui poniamo il delta > 0 per l’esistenza delle radici quindi facciamo variare v finché non otteniamosoluzioni intere positive che saranno i fattori di N=pq. Dato che s 2 p ho nei tre casi 4 2 2 4 4 2 4 6 2Da cui deduco i valori interi che deve assumere v

×