用 c 计算毕达哥拉斯三元组

标签 c pythagorean

我正在尝试解决 Project Euler #9,即 http://projecteuler.net/index.php?section=problems&id=9 .

我查看了这段代码,逻辑似乎是正确的……但我根本没有得到任何输出,甚至连循环中的 printfs 都没有。我(显然)是 C 新手,正在尝试学习高级语言……你能告诉我哪里出了问题吗?

#include <stdio.h>

int main(){
    unsigned int a=0, b=0, c=0;
    short int pass=0;
    while(!pass){
        //printf("a = %4d\n", a);
        a++;
        b=a;
        while(!pass){
            b++;
            c=1000-a-b;
            if(b>=c) break;
            if(a*a+b*b==c*c) pass = 1;
        }
    }
    printf("a=%d, b=%d, c=%d, a*b*c=%d, a+b+c=%d\n", a, b, c, a*b*c,a+b+c);
    return 1;
}

非常感谢。

编辑: 好的,我已经解决了上面显示的浮点问题,但现在由于某种原因 a 永远不会超过 2,使其无限循环。

编辑: 我修复了一些错误,但它仍然返回 a=33, b=483, c=484, a*b*c=7714476, a+b+c =1000,这不太正确。 :(

哇,我太复杂了。现在可以了。谢谢大家。

最佳答案

不要使用 ==!= 比较浮点值。 float 可以对您施展各种花招。相反,请尝试检查 sc 是否在接近整数的某个合适的小范围内,您的运气会更好。

关于用 c 计算毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089507/

相关文章:

c - 我的函数不返回任何东西;终端进入炼狱?

c - .byte 在这个 asm 行中是什么意思?

c++ - 和为 1000 的毕达哥拉斯三元组?

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

algorithm - 仅计算一个平面内两点之间的距离

c - 强制 C 库 qsort 执行快速排序而不是合并排序

c - 创建并返回数组的函数导致问题

c - 将指针的地址分配给指针到指针

python - 这个毕达哥拉斯三重函数的复杂度是多少?

java - 使用方法计算三角形的第三边