pythagorean - 如何打印具有最大斜边的毕达哥拉斯三元组

标签 pythagorean hypotenuse

我必须找到所有“c”(其中 c 是斜边)的值小于用户输入的整数的毕达哥拉斯三元组。我能够做到这一点,但是我还必须打印出哪个三元组具有最大的“c”值。

# include <stdio.h>

int main()
{
    int i=1, N, a, b, c;

    printf("Please enter an integer number: ");
    scanf("%d", &N);

    for(c=1; c<N; c++)
    {
        for(b=1; b<c; b++)
        {
            for(a=1; a<b; a++)
            {
                if((a*a)+(b*b)==(c*c))
                {
                    printf("\n%d.(%d,%d,%d)\n", i++, a, b, c);
                }
            }
        }
    }

    printf("\nThere are %d triples which contain a c<N.\n\n", (i++)-1);

    system("PAUSE");
    return(0);
}

最佳答案

你可以有一个变量来记住最大的c。下面添加注释行,看一下:

int largest_c = 0; //define it
for(c=1; c<N; c++)
{
    for(b=1; b<c; b++)
    {
        for(a=1; a<b; a++)
        {
            if((a*a)+(b*b)==(c*c))
            {
                if (c > largest_c) { //found a bigger one, so remember it
                     largest_c = c;
                }
                printf("\n%d.(%d,%d,%d)\n", i++, a, b, c);
            }
        }
    }
}

顺便说一句,通过一个小技巧,您可以轻松地加快您的算法:任何时候,您发现 a^2 + b^2 >= c^2,您可以立即跳过其余部分进入最内层循环。您还可以做其他事情来进一步加速算法。

关于pythagorean - 如何打印具有最大斜边的毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133211/

相关文章:

c++ - 查找给定圆中正方形数的算法

java - 列出java中所有毕达哥拉斯三元组

math - 如何仅使用斜边求直角三角形的反正切?

java - Math.hypo 函数

C程序求斜边,发现斜边太大

c++ - Libc hypert 函数似乎为 double 类型返回错误的结果...为什么?

java - 二元运算符的错误操作数类型 - 毕达哥拉斯三元组

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

math - 欧拉计划 9 理解