欧拉计划 第九题

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;
}


猜你喜欢

转载自blog.csdn.net/qq_38362049/article/details/80954439