Project Euler | Problem 9

Problem 9


Special Pythagorean triplet

A Pythagorean triplet is a set of three natural numbers, a<b<c, for which,

a^2 + b^2 = c^2

For example, 3^2 + 4^2 = 9 +16 = 25 = 52.

There exists exactly one Pythagorean triplet for which a + b + c = 1000.

Find the product a * b * c.


特殊毕达哥拉斯三元组

毕达哥拉斯三元组由三个自然数 a < b < c 组成,并满足

a^2 + b^2 = c^2

例如,32 + 42 = 9 + 16 = 25 = 52。

有且只有一个毕达哥拉斯三元组满足 a + b + c = 1000。求这个三元组的乘积 a * b * c 。


/*
*  Program 1
* 
* 思路:
*	1.化简消元以上式子为二元一次方程
*	2.运用数学方法,趋近变量的取值范围
*	3.用遍历数表的形式穷举,直到得到答案为止
* 收获:
* 评价:
*	优点:
*		1.进行化简消元
*		2.在一定的范围内穷举
*	缺点:
*		1.穷举遍历,运算量大
*		2.范围还不够精确
* 
*/

#define _CRT_SECURE_NO_WARNINGS
#define SUM 1000

#include <stdio.h>

/*-------------------------------------------------*/

int main()
{
	unsigned int a, b;
	short flag = 0;
	int ret = 0;

	for (a = 1; a <= SUM / 3; a++)
	{
		//初始化 b值
		b = SUM / 2 - a + 1;
		if (b < a + 1)
		{
			b = a + 1;
		}

		for (; b <=SUM; b++)
		{
			if (2 * (SUM - a) * (SUM - b) == SUM * SUM)
			{
				flag = 1;
				ret = a * b * (SUM - a - b);
				break;
			}
		}

		if (flag)//找到答案,退出循环
		{
			break;
		}
	}

	printf("%d\n", ret);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值