A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
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; }