Problem 9

ピタゴラスの三つ組(ピタゴラスの定理を満たす自然数)とはa<b<cで
a² + b² = c²
を満たす数の組である.

例えば, 3² + 4² = 9 + 16 = 25 = 5²である.

a + b + c = 1000となるピタゴラスの三つ組が一つだけ存在する. このa,b,cの積を計算しなさい.


プログラム
#include<stdio.h>
#include<math.h>

int main(void){
int a,b,c,temp;
printf("Q9:a + b + c = 1000となるピタゴラスの三つ組が一つだけ存在する. このa,b,cの積\n");
for(a=1; a<1000/3; a++){ // a<b<cよりaは1000/3より小さい
for(b=a+1; b<500; b++){ // bはaより大きいのでa+1から500くらいまで
temp = a*a + b*b; // a^2+b^2をtempへ
c = sqrt(temp); // tempの平方根をCへ
// tempの平方根が整数であればtempとc*cは等しくなるはずなので
if(temp != c*c) continue; // tempの平方根が整数でない場合以下の処理を飛ばす
if(a+b+c == 1000){ // a+b+c=1000なら終わり
printf("%d * %d * %d = %d\n",a,b,c,a*b*c);
return 0;
}
}
}
}

結果
Q9:a + b + c = 1000となるピタゴラスの三つ組が一つだけ存在する. このa,b,cの積
200 * 375 * 425 = 31875000