python 100例之例三

来源:互联网 发布:天音网络发展有限公司 编辑:程序博客网 时间:2024/06/11 22:52

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
解题思路:此题表面信息量少之又少,看上去很不好解。并且只是说一个整数,并没有给边界,所以自定义边界值为1000,设该数字为x.继续阅题,貌似突破口只有完全平方数,回忆数学中完全平方数的特性,看起来也没有什么明显的突破口。再思考,既然是完全平方数,那么是否可以判断sqrt()后的结果为int类型呢?查阅python官方文档,sqrt()结果都是float类型,如果将float类型转换成int类型,又无法判断该数字是否是完全平方数。再想方法,将sqrt()的结果转换为列表,如果最后一个元素是0,则证明这个结果就是整数,这样就间接证明了x+100和x+100+168的数一定是完全平方数。但是如何将一个float类型的数字转换为列表呢?可以先将float类型转换为str类型,使用str的split方法将str转换为列表。
代码如下:

import mathfor x in range(0,1000):    a = math.sqrt(x+100)    b = math.sqrt(x+100+168)    a = str(a).split('.')    b = str(b).split('.')    if a[len(a)-1] == '0'and  b[len(b)-1]=='0':        print x

在网上查找解题方法,还看到一种简单的方法,先贴出来以作学习:

import mathfor i in range(10000):    x = int(math.sqrt(i + 100))    y = int(math.sqrt(i + 268))    if(x * x == i + 100) and (y * y == i + 268):        print i

该方法使用了一个恒等的概念,先将数字i+100和i+100+168开方得出x和y,再使用x和y分别平方等于i+100和i+100+168.这种方法比我自己的方法更简单。
在网上看到一串代码,使用math.abs方法,求绝对值判断该数字是否是整数,给我另一种解题思路。

import mathdef is_sqr(x):    a = math.sqrt(x+100)    b = math.sqrt(x+100+168)    if abs(a-round(a)) < 0.00000001 and abs(b-round(b)) < 0.00000001:        return xprint filter(is_sqr,range(1,1000))

filter是python的一个内建函数,用于过滤序列,具体可参考如下网址:
https://docs.python.org/2.7/search.html?q=filter
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001418612030427b1f1cf4ea04c41368e8a6753dca43070000
在网上也看到有人用is_integer来判断一个float是否是整数,但是也有人说这个判断并不是太准确,所以不推荐使用该方法判断,不过也贴出使用is_integer 的代码。

import mathdef is_sqr(x):    return math.sqrt(x+100).is_integer() and math.sqrt(x+100+168).is_integer()print filter(is_sqr, range(1, 1000)

同时,在最后贴出给了我思路使用abs方法的源代码:

import math  def isPP(n):      m=2      res=[]      while m<=round(math.sqrt(n)):          mid=math.log(n,m)          if  abs(mid-round(mid))<0.000000001:              res.append(m)              res.append(int(round(mid)))              break          m+=1      if len(res)==0:return None      return res 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃羊肉和西瓜后怎么办 娃儿感冒了很咳怎么办 5岁娃儿经常感冒发烧怎么办 娃儿冷得发抖感冒怎么办 吃羊肉和茶后怎么办 宝宝胆汁酸高22怎么办 5个月发烧38度怎么办 28个月宝宝不愿把尿怎么办 16个月宝宝咳嗽怎么办 宝宝晚上不用纸尿裤要尿床怎么办 宝宝头型睡偏了怎么办 初生婴儿鼻子被奶块堵住怎么办 月经排的不顺畅怎么办 四个月的小孩拉肚子怎么办 月经期做了水光怎么办 4个多月的宝宝拉肚子怎么办 2个月婴儿积食怎么办 3个月婴儿积食怎么办 2个月的婴儿干呕怎么办 脚上的皮烂了怎么办 嘴皮里面烂了怎么办 未满月婴儿拉屎很费劲怎么办 新生儿血钙1.7怎么办啊 3个月宝宝胃口小怎么办 3个月宝宝缺钙怎么办 五个月宝宝吃手睡觉怎么办 2个月宝宝有蛲虫怎么办 四个月婴儿漏屎怎么办 母乳喂养6个月才11斤怎么办 过期的果泥肉泥怎么办? 孩子被开水烫了怎么办 小儿喝开水烫了怎么办 小孩不识字怎么办17-18 3岁宝宝不识数字怎么办 小孩数字写反了怎么办 3岁宝宝乱啃东西怎么办 闹钟的指针松了怎么办 手机想让它横屏怎么办 教孩子写作业头都被气炸了怎么办 2岁宝宝大小脸怎么办 宝宝2岁半不认识颜色怎么办