APP下载

趣味数学——勾股数

2021-08-27王德贵

电脑报 2021年25期
关键词:定义程序

王德贵

勾股定理是大家熟知的,勾股数,就是构成勾股定理的三个数,即一个数的平方是另外两个数的平方和。比如,32+42=52,那么3、4、5就是勾股数。那么在一定范围内,有多少勾股数呢?我们在Scratch、Python和Applnventor_种环境中编程解答这一问题,并着重关注程序在不同环境中的运行效率。

一、原理分析

本例可以考虑3个数,都从1开始用枚举法来解决问题,但这种方法循环次数最多,100以内的勾股数就需要计算1003=106,100万次!根据测算Scratch中运行要至少3分钟,Python运行不到1分钟,Applnventor运行大约需要1分钟,可见,它们各自运行的速度是不一样的。当然这主要是由程序语言决定的,Python运行最快,Scratch最慢。

那么怎样能够减少运算量呢?新的思路是根据天系式a2+b2=C2可知,先确定c的值,那么a和b的值一定小于c,所以循环到等于即可,这样就不用循环到最大值,从而减少运行时间。

二、Scratch编程实现

我们把满足勾股定理的3个数,加入链表,然后显示出来,这个比较好理解。但运行后发现,有重复的项(比如3、4、5和4、3、5),共104项实际应为52项,说明恰好重复2次,那有办法去除重复的项目吗?

我們把每个c值加入链表,然后在下次得到满足条件的值时,就查询一下,这几个值在不在链表里:在,就是重复,不加入链表:不在链表里,那就加入进来!这样就不会有重复的数据了。

这段代码的作用就是去重。如果a.b都包含在链表里,就说明是重复数据,所以就做下标记0:如果a.b都不包含在链表里,就说明没有重复数据,于是就将数据加入链表f去重后,显示正常为52个。……

登录APP查看全文

猜你喜欢

定义程序
永远不要用“起点”定义自己
定义“风格”
试论我国未决羁押程序的立法完善
失能的信仰——走向衰亡的民事诉讼程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
成功的定义
创卫暗访程序有待改进
恐怖犯罪刑事诉讼程序的完善
修辞学的重大定义