18051 勾股数

本文探讨了如何使用Python编程高效地找出所有不超过给定数值n的勾股数对,并介绍了两种不同的代码优化策略,包括三层嵌套循环和利用勾股定理简化循环条件。错误代码则指出了解决方案中的问题,即输出顺序不符合要求。
摘要由CSDN通过智能技术生成

18051 勾股数
Description
若三个正整数a、b、c,其中a<=b<=c,满足a2+b2=c2表示上标,称这三个数为“勾股数”,例如:3、4、5是勾股数。编程输出不大于n的所有勾股数。

输入格式
输入一个数(n<=100)

输出格式
输出所有勾股数,按第1个数字由小到大排列(若第1个数字相同,按第2个数字排)

输入样例
16

输出样例
3 4 5
5 12 13
6 8 10
9 12 15

注意输出要求!因此大循环是从a开始,后面的每层初始 = a

正确代码1:三层循环嵌套

#include <iostream>
#include <cstdio>
#include <math.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    for(int a = 1;a <= n;a++){
        for(int b = a;b <= n;b++){
            for(int c = b;c <= n;c++){
                if(a * a + b * b == c * c){
                    cout << a << " " << b << " " << c << endl;
                }
            }
        }
    }

    return 0;
}

正确代码2:两层循环嵌套,c用公式求得


#include <iostream>
#include <cstdio>
#include <math.h>

using namespace std;

int main()
{
    int n,a,b,c;
    cin >> n;
    for(a = 1;a <= n;a++){
        for(b = a;b <= n;b++){
            c = (int)sqrt(a * a + b * b);
            if(a * a + b * b == c * c && c <= n){
                cout << a << " " << b << " " << c << endl;
            }
        }
    }

    return 0;
}

错误代码:输出是按照c从小到大,不符题意

#include <iostream>
#include <cstdio>
#include <math.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    for(int a = 1;a <= n;a++){
        for(int b = 1;b <= a;b++){
            for(int c = 1;c <= b;c++){
                if(a * a == b * b + c * c){
                    cout << c << " " << b << " " << a << endl;
                }
            }
        }
    }

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值