文档章节

勾股数

寂寞暴走伤
 寂寞暴走伤
发布于 2016/07/14 19:30
字数 402
阅读 13
收藏 0

问题描述:

所谓勾股数,一般是指能够构成直角三角形3条边的3个正整数(a,b,c)。
即a2+b2=c2,a,b,cΣN
求1000以内的勾股数。


我的思路:使用for循环列出所有的数,连续判断是否满足a2+b2=c2关系,满足的就是勾股数,但是要注意,三个数中任意一个都不可以为0,且重复的如3,4,5和4,3,5要去除,只留下其中一个;


我的代码:

for i in range(1,1000):
    for j in range(i+1,1000):
        for k in range(1000):
            if i**2+j**2==k**2:
                print i,j,k


示例代码:

import math
for a in range(1, 1000):
    for b in range(a + 1, 1000):
        c = math.sqrt(a * a + b * b)
        if c > 1000:
            break
        if c.is_integer():
            print a, b, int(c)


代码分析:想来想去也就想到了这个写法,但是很明显,我的代码很臃肿,运行速度非常慢,效率也非常低,毕竟基数大,还用了三个for循环。

而示例代码明显比我的高效,它只循环了两次,使用math模块的sqrt函数求得a2+b2的平方根值(注意该值的类型为浮点型,不是整型),然后判断该值是否在1000以内,并且判断该值是否为有限的浮点型数,如果是就打印出a,b和整型化的c;


总结:

  1. math模块的函数说明

wKioL1dCqzSicxdtAADEFa0HnZE028.png

wKiom1dCqkOhsQRwAAEeysB5xWo755.png

wKioL1dCqzWgoxYoAACybsuP6to505.png

wKiom1dCqkTzDvMuAAESjlKXNWA575.png

wKiom1dCqkWjAuA8AAEnjh6m3Mw125.png

wKiom1dCqkXSXX-QAAA0pBG7cPo654.png


2.关于is_integer的说明:

is_integer就是判断一个浮点数是否是有限的,如果是就返回True,否则返回False;

http://python-reference.readthedocs.io/en/latest/docs/float/is_integer.html



题目出处:http://www.cheemoedu.com/exercise/16

© 著作权归作者所有

共有 人打赏支持
上一篇: 自守数
下一篇: 年龄问题
寂寞暴走伤
粉丝 0
博文 40
码字总数 20969
作品 0
南阳
运维
私信 提问
如何利用几何画板辅助数学教学

几何画板软件提供充分的手段帮助用户实现其教学思想,只需要熟悉软件的简单的使用技巧即可自行设计和编写应用范例,范例所体现的并不是编者的计算机软件技术水平,而是教学思想和教学水平,可...

学术研究软件
2016/04/05
87
0
Code Hunt SECTOR4 & SECTOR5 (Conditionals1-2)

1.关于本博客的说明 Code Hunt 是我从CSDN上的一篇文章中无意间看到的:微软研究院正式发布编程学习游戏Code Hunt,游戏地址从这里进入。 本篇博客是游戏的CONDITIONALS部分的C#部分解题代码...

北风其凉
2014/05/20
0
0
怎么用几何画板演示赵爽弦图证明勾股定理

在学习勾股定理的相关知识时,课本上有提到用赵爽弦图来验证该定理,在黑板上无法对图形进行动态演示,无法让学生们真正地理解。现在几何画板这一款动态课件制作工具的出现,弥补了黑板式教学...

学术研究软件
2016/11/04
7
0
Get it,你离几何达人不远了!

对于爱学几何的人,是否存在这样的困扰:没有标准的尺规工具,图形画的不标准,理解上总是出错......整天在纸上画图,浪费大把大把的时间......几何图形画的不美观,在别人面前都拿不出手,公...

学术研究软件
2016/04/22
31
0
曼哈顿距离算法

首先介绍一下曼哈顿,曼哈顿是一个极为繁华的街区,高楼林立,街道纵横,从A地点到达B地点没有直线路径,必须绕道,而且至少要经C地点,走AC和 CB才能到达,由于街道很规则,ACB就像一个直角...

付翔
2014/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue.js开发环境搭建说明(mac)

vue开发环境搭建(mac) 投影放大:cmd + + 安装Node 下载Node 官网下载 https://nodejs.org/en/download/ 安装Node 双击安装包,选择安装目录,比如: /usr/local/bin 安装成功后最好记录一...

Danni3
30分钟前
2
0
Qt编写自定义控件3-速度仪表盘

前言 速度仪表盘,写作之初的本意是用来展示当前测试的网速用的,三色圆环+数码管显示当前速度,Qt自带了数码管控件QLCDNumber,直接集成即可,同时还带有动画功能,其实也可以用在汽车+工业...

飞扬青云
35分钟前
2
0
【论文阅读】Image Super-Resolution via Deep Recursive Residual Network

题目:通过深度递归残差网络实现图像的超分辨率 摘要: 近年来,基于卷积神经网络的模型在单张图像的超分辨率上已经取得了巨大的成功。由于深度网络的强大,这些CNN模型学习了从低分辨率输入...

云烟成雨forever
37分钟前
2
0
为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
56分钟前
14
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部