欧拉计划 第九题

xiaoxiao2021-02-28  49

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; }
转载请注明原文地址: https://www.6miu.com/read-2631570.html

最新回复(0)