a2 + b2 = c2
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.Find the product abc.
毕达哥拉斯三元组是一组三个自然数,a < b < c,其中,
a 2 + b 2 = c 2
例如,3 2 + 4 2 = 9 + 16 = 25 = 5 2。
恰好存在一个毕达哥拉斯三元组,其中a + b + c = 1000. 找到数字abc。
思路
1.素勾股数:如3,4,5 ,它们的整倍数也是素勾股数;
2.a,b,c之间两两互质;
3.a,b必为一奇一偶;
4.任何素勾股数均可以表示成如下形式,其中n<m,且gcd(n,m) = 1;
a = 2 * m * n;
b = m * m - n * n;
c = m * m + n * n;
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int a,b,c,e;
int flag = 1;
for(int i = 1; i < 32 && flag; i++){
for(int j = i + 1; j <= 32 && flag; j++){
a = j * j - i * i;
b = 2 * i * j;
c = i * i + j * j;
if(1000 % (a + b + c) == 0){
e = (int)pow(1000 / (a + b + c), 3);
printf("%d\n", e * a * b * c);
flag = 0;
}
}
}
return 0;
}