gpt4 book ai didi

c - 找到 a + b + c = 1000 的毕达哥拉斯三元组

转载 作者:太空狗 更新时间:2023-10-29 16:23:31 26 4
gpt4 key购买 nike

毕达哥拉斯三元组是一组三个自然数,a < b < c,其中,a2 + b2 = c2

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

恰好存在一个毕达哥拉斯三元组,其中 a + b + c = 1000。找到产品 abc。

来源:http://projecteuler.net/index.php?section=problems&id=9

我试过了,但不知道我的代码哪里出错了。这是我在 C 中的代码:

#include <math.h>
#include <stdio.h>
#include <conio.h>


void main()
{
int a=0, b=0, c=0;
int i;
for (a = 0; a<=1000; a++)
{
for (b = 0; b<=1000; b++)
{
for (c = 0; c<=1000; c++)
{
if ((a^(2) + b^(2) == c^(2)) && ((a+b+c) ==1000)))
printf("a=%d, b=%d, c=%d",a,b,c);
}
}
}
getch();
}

最佳答案

#include <math.h>
#include <stdio.h>

int main()
{
const int sum = 1000;
int a;
for (a = 1; a <= sum/3; a++)
{
int b;
for (b = a + 1; b <= sum/2; b++)
{
int c = sum - a - b;
if ( a*a + b*b == c*c )
printf("a=%d, b=%d, c=%d\n",a,b,c);
}
}
return 0;
}

解释:

  • b = a;
    如果 a, b (a <= b) 和 c 是毕达哥拉斯三元组,
    然后是 b、a (b >= a) 和 c - 也是解决方案,因此我们只能搜索一种情况
  • c = 1000 - a - b; 这是问题的条件之一(我们不需要扫描所有可能的'c':只需计算它)

关于c - 找到 a + b + c = 1000 的毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2817848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com