栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学术 > 人文期刊 > 电脑报

趣味数学——勾股数

电脑报 更新时间: 发布时间: 学术归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

趣味数学——勾股数

王德贵

勾股定理是大家熟知的,勾股数,就是构成勾股定理的三个数,即一个数的平方是另外两个数的平方和。比如,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个。程序测算通过。三、Python编程实现

Python程序的思路和Scratch编程类似,基本程序如下,但依然有重复的数据。

所以仍然需要去重,在Python中,去重最简单的当数集合!这个和高中数学知识基本一样的,其特点有二=:“确定性:对于任意一个元素,要么它属于某个指定集合,要么它不属于该集合,二者必居其一。互异性:同一个集合中的元素是互不相同的。无序性:任意改变集合中元素的排列次序,它们仍然表示同一个集合。”

定义空集m=se“),虽然元素是放在大括号里,但定义m={}是定义了一个字典,不是集合,但如果定义m={3,4,5}却是集合,这一点要特别注意。

可以拓展为任意范围内的勾股数,通过键盘输入,确定最大和最小值。可以求出任意范围内的勾股数。四、Applnventor编程实现

Applnventor设计的程序,编写难度低又可以在手机上运行,这是它受到欢迎的原因之一。

编程思路与Python不同,与Scratch类似,需要将满足条件的值加入列表中,同时判断在同一循环中,满足条件的元素是否在列表中,以达到去重的目的。

手机上运行测试,可以得到我们想要的结果。程序需要输入求值范围,如果范围最大值不大于最小值,就提示错误,需要重新输入。五、小结

三种方法其实都要使用列表,算法也类似,但在Python中,集合是更简便、快捷的方法。通过二种编程环境和应用的比较,Python比Scratch要优化很多,Applnventor编程有它独有的特点,就是可以在手机上和其他应用一样使用。

希望大家可以通过二款软件的比较,掌握各自的特点和实用性,为进一步学习提供参考和帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueshu/247169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号