Fattorizzazione con le equazioni polinomiali

1,122 views

Published on

la fattorizzazione con le curve ellittiche

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

  • Be the first to like this

No Downloads
Views
Total views
1,122
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Fattorizzazione con le equazioni polinomiali

  1. 1. Fattorizzazione e curve ellittiche – polinomi di II, II e IV grado Di Cristiano Armellini (cristiano.armellini@alice.it)Torniamo ancora una volta al problema della fattorizzazione p=ab e descriviamo un nuovo algoritmo chesfrutta le proprietà delle equazioni algebriche di II, III e IV grado.Sappiamo che ,sia allora ; ; / . Otteniamo cosìfacilmente un’equazione di III grado in s: dove , e n è noto ma non bche è un fattore di n. Sappiamo però dalla matematica che le equazioni algebriche possono essere risoltealgebricamente fino a quelle di quarto grado: applicando la formula per la risoluzione dell’equazione di IIgrado otterremo facilmente delle condizioni per l’esistenza delle radici che implicheranno delle condizionianche per b (che tra l’altra deve essere un intero e possiamo supporre senza perdere di generalità anchedispari). A questo punto saremo in grado di costruire un programma ad hoc che facendo variare b nel suocampo di esistenza ci dia velocemente s (che a sua volta deve essere intero e possiamo supporre senzaperdere di generalità anche pari essendo la somma di due fattori primi, dunque dispari). Trovato il fattoreb corrispondente ad una soluzione intera positiva di s è banale calcolare l’altro fattore a quindi completarela fattorizzazione di n. Per facilitare i calcolo possiamo impiegare il software Mathematica ottimo per il
  2. 2. calcolo algebrico che una volta impostata l’equazione in s ci fornisce direttamente le soluzioni s = s(n.b) dacui partire per impostare le condizioni di esistenza delle radici, dunque le condizioni per b.Analogamente equest’ultima è un’equazione cubica in D=D(n,b) che affrontiamo in modo analogo a quellaprecedentemente descritta l’unica differenza è che questa volta cerchiamo i valori di b che ci danno D=a-b(ovvero D è la differenza e non la somma dei due fattori di n=ab).In modo simile possiamo ragionare usando:Arriveremo in questi casi ad una equazione di quarto grado che possiamo risolvere in ogni caso in modoalgebrico e che ci consentirà di trovare le condizioni per b e per S=a+b D= a-b con p=ab. Ovviamentedall’equazione di II grado sappiamo che , 2 , dove , .
  3. 3. D’altro canto invece di impostare una equazione in S o in D possiamo trovare delle equazioni in b dalleequazioni già studiate in precedenza b=b(s, n), b =(D,n):e cercare di risolvere l’equazione nella variabile (nei primi due casi diventa un’equazione biquadratica) enei secondi due casi nella variabile (anche qui si riduce ad un’equazione biquadratica più complessa).Ponendo infine il discriminante maggiore di zero (per l’esistenza delle radici) abbiamo nuovi limiti in S o Dche possiamo usare per cercare più rapidamente le soluzioni intere positive di b ovvero trovare i fattori din.Affrontiamo un caso pratico e partiamo dalle relazioni:
  4. 4. , ,Sostituendo ho che D=0, 2, 4, 6, 8 , 2ovvero due equazioni biquadratiche che possono facilmente risolte al variare di S, D interi con b interopositivo 2 4 2 2 4 2listato in C++ (caso D, caso della differenza)#include <cstdlib>#include <iostream>#include <math.h>using namespace std;int main(int argc, char *argv[]){double D, p, i, x, y;i =0;cout << "Inserisci il numero da fattorizzare ";cin >> p;D = 0;do{ x = sqrt((2*p+pow(D,2)+sqrt(pow(D,4)+4*p*pow(D,2)))/2);
  5. 5. y = sqrt((2*p+pow(D,2)-sqrt(pow(D,4)+4*p*pow(D,2)))/2); D = D+2; i = i+1;} while (floor(x) != x);cout << x << "n";cout << y << "n";cout << "passaggi" << i << "n";; system("PAUSE"); return EXIT_SUCCESS;}Listato C++ (caso della somma S)#include <cstdlib>#include <iostream>#include <math.h>using namespace std;int main(int argc, char *argv[]){double s, p, i, x, y;i =0;cout << "Inserisci il numero da fattorizzare ";cin >> p;s = 2*int(sqrt(p));do{ x = sqrt((pow(s,2)-2*p+sqrt(pow(s,4)-4*p*pow(s,2)))/2); y = sqrt((pow(s,2)-2*p-sqrt(pow(s,4)-4*p*pow(s,2)))/2); s = s+1; i = i+1;} while (floor(x) != x);cout << x << "n";cout << y << "n";cout << "passaggi" << i << "n";; system("PAUSE"); return EXIT_SUCCESS;}

×