Salve,
ho "ideato" questo algoritmo per la ricerca di terne pitagoriche in un intervallo che va da 0 a x dove x e' la dimensione massima dei cateti (a e b, nel caso del programma i e j).
int MakePythagoreanTriple(int max) {
int c, i, j, k, count = 0;
double flag = 0;
for (i = 3; i <= max; i++) {
for (j = i + 1; j <= max; j++) {
c = (int)(pow(i, 2) + pow(j, 2));
for (k = j + 1; k <= c; k++) {
if (CheckPythagoreanTriple(i, j, k)) {
printf("\t~ %d, %d, %d\n", i, j, k);
count++;
}
}
}
}
return count;
}
double CheckPythagoreanTriple(int a, int b, int c) {
int result = (int)(pow(a, 2) + pow(b, 2));
c = (int)(pow(c, 2));
if (result == c) {
return 1;
}else{
return 0;
}
}
L'algoritmo funziona a dovere e trova tutte le terne pitagoriche senza doppioni. Solo che, esiste un modo più veloce? A livello computazionale, questo è molto pesante.. vorrei sapere se ci sono metodi alternativi più leggeri.
Grazie.