ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python基础练习题(一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?)

2021-05-15 21:02:05  阅读:483  来源: 互联网

标签:练习题 平方 python range 168 100 268 math


day2

---------------------------------------------------------------

实例003:完全平方数

题目: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

 

仿佛不会思考,直接上手写。。。

1 k = 10001
2 for i in range(0,k):
3     for j in range(0,k):
4         if j*j ==(i+100):
5             for k in range(0,k):
6                 if k*k ==(i+268):
7                     print(i)
8                     continue

嗯,假装找到几个值,但这代码看得自己想吐,效率真TM慢,真low

标准答案

思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。

结合起来:

1 n=0
2 while (n+1)**2-n*n<=168:
3     n+=1
4 
5 for i in range((n+1)**2):
6     if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5):
7         print(i-100)

对比下,这里应该找到数的最大值,而我少了这一步,数学改补补了。对了求一个平方根可以用   x**0.5 == int (x**0.5)   ,脑子锈了。。。下面是个更烧脑的答案。。。

其他答案

分析:整数+100是一个完全平方数即大于0的数,所以这个数应该是大于-99,否则不会是完全平均数。

x+100 =n*n

x+100+168=m*m 

2x+268=n*n+m*m

2x=n*n+m*m-268

x=(n*n+m*m-268)*0.5

m*m-n*n=168,根据这条推断,100*100-99*99=10000-9801=199>168,所以m和n的值都小于100,那么x的值就小于10000,所以

 1 import math
 2 
 3 
 4 #方法一
 5 for i in range(-99,10000):
 6     x = int(math.sqrt(i+100))
 7     if x*x == i+100:
 8         y = int(math.sqrt(i+100+168))
 9         if y*y==i+100+168:
10             print(i)
11             
12             
13 #方法二,再次优化,以m,n来写代码,n<100,又因为m*m=n*n+168,所以m>math.sqrt(168),即m>13,这个方法循环次数更少
14 for m in range(13,100):
15     n = int(math.sqrt(m*m-168))
16     if n*n ==m*m-168:
17         print(m*m-168-100)

 

标签:练习题,平方,python,range,168,100,268,math
来源: https://www.cnblogs.com/qgc1995/p/14762220.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有