▷Scratch课堂丨学数学-算勾股数

点击上方蓝字我们哦!

勾股数

勾股数又名毕氏三元数 。勾股数就是可以构成一个直角三角形三边的一组正整数。勾股定理:直角三角形两条直角边a、b的平方和等于斜边c的平方(a²+b²=c²)

01

题目

请写出100以内所有的勾股数?

02

解题思路

我们用编写程序的方式可以快速解出这道题目。我们知道最小勾股数是3、4、5 。要避免写程序算出3、4、5和4、3、5这样重复的勾股数,就要使三个数符合a<b<c的关系。改程序采用枚举算法,从3开始依次举例a、b、c三个变量的可能值,并使用勾股定理来判断这三个变量值是否符合要求。如果它们符合要求,就把它们记录到“勾股数”列表中。

03

程序脚本案例

04

其它编程语言实现

 Python

#通过公式求勾股数

def Ht(k, m):

            a = k * (m * m - n * n)

            b = k * (2 * m * n)

            c = k * (m * m  + n * n)

    result = []

    for k0 in range(1, k + 1):

        for m0 in range(2, m + 1):

            for n0 in range(1, m0):

                a = k0 * (m0 * m0 - n0 * n0)

                b = k0 * (2 * m0 * n0)

                c = k0 * (m0 * m0  + n0 * n0)

                if not {a, b, c} in result:

                    result.append({a, b, c})

    result = [sorted(list(x)) for x in result]

    return (sorted(result,key=lambda x:x[0]),

    '共有 {length} 组勾股数'.format(length = len(result)))

Ht(10, 10)  

c++    

#include <iostream>

using namespace std;

int main()

{

    int a, b, c;

    for (a = 1; a < 100; a++)

    for (b = 1; b < 100; b++)

    for (c = 1; c < 100; c++)

    if (a<b && a*a + b*b == c*c)

        cout << a << " " << b << " " << c << endl;

    return 0;

}

05

试一试

使用起边的算法找出自然数100-1000中所有勾股数哦!

06

脚本案例获取

可以点击阅读原文前去下载!后续如果链接失效等下载问题都可联系QQ:1183842590 。

更多相关数学算法的教程案例可以购买下边这本书籍哦,还有可以关注作者公众号:小海豚科学馆进行互动哦!在当当上买这本书比其它平台购买价格更优惠!想赶快遨游在算法的海洋中,就快快购买吧!

07

更多相关书籍推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少儿编程课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值