Python:每日一题 3
本帖最后由 新手·ing 于 2017-3-25 09:58 编辑题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?
程序分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。
提示:使用 math 模块。
欢迎小伙伴们,一起答题!
如果你有能力,欢迎加入我们!
已经上车老司机:@ooxx7788
点我上车 import math
for 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)
我的解答! 本帖最后由 冬雪雪冬 于 2017-3-25 10:38 编辑
我也写一个
list1 = [ i * i for i in range(85, 9, -1)]
for i in range(len(list1)):
for j in range(i + 1, len(list1)):
if list1 - list1 == 168:
print(list1 - 268)
elif list1 - list1 > 168:
break import math
for i in range(1,10001,1):
if math.sqrt(i+100)%1 == 0 and math.sqrt(i+268)%1 == 0:
print(i)
linqing3600 发表于 2017-3-25 10:42
import math
for i in range(1,10001,1):
if math.sqrt(i+100)%1 == 0 and math.sqrt(i+268)%1 == 0: ...
谢谢支持点我上车 for x in range(-100, 10000):
a = (x + 100) ** 0.5
b = (x + 268) ** 0.5
if not a % 1 and not b % 1:
print(x, a, b)
-99 1.0 13.0
21 11.0 17.0
261 19.0 23.0
1581 41.0 43.0
你们忽略了-99也是整数哦! ooxx7788 发表于 2017-3-25 11:20
你们忽略了-99也是整数哦!
可以可以
666 一行代码求解:
[-99, 21, 261, 1581] jerryxjr1220 发表于 2017-3-25 19:54
一行代码求解:
[-99, 21, 261, 1 ...
大佬
受在下一拜 冬雪雪冬 发表于 2017-3-25 10:33
我也写一个
感谢版主支持! 我写的是这个
看了后面的答案,发现少了-99
def test3():
for i in range(10000):
if (i+100)**0.5 % 1 == 0 and (i+268)**0.5 % 1 == 0:
print (i)
i的取值范围不好定,这个直接关系到了最终结果
for i in range(10000):这个地方不知道怎么改才好 import math
for i in range(10000):
x = math.sqrt(i + 100)
y = math.sqrt(i + 268)
if int(x) == x and int(y) == y:
print(i)
else:
continue
难道我理解错误? import math
for x in range(10000):
a = math.sqrt(x+100)
b = math.sqrt(x+268)
if ((a).is_integer() == True) and ((b).is_integer() == True):
print (x)
本帖最后由 余欲渔 于 2017-4-11 13:58 编辑
def cs(i=1):
if (i+100)**0.5==int((i+100)**0.5) and (i+268)**0.5==int((i+268)**0.5):
print(i)
return 1
return 0
for i in range(1,10000,10):
#if cs(i) :break
cs(i)
== RESTART: C:\Users\ASUS\AppData\Local\Programs\Python\Python35-32\test.py ==
21
261
1581
>>>
gopythoner 发表于 2017-4-1 00:09
我写的是这个
看了后面的答案,发现少了-99
负数的平方也是正数,那最多就是到-100了 gopythoner 发表于 2017-4-1 00:09
我写的是这个
看了后面的答案,发现少了-99
这道题为什么要余1。。 求思路 import math
for a in range(1,10000):
x = int(math.sqrt(a+100))
y = int(math.sqrt(a+268))
if x*x==(a+100) and y*y==(a+268):
print(a) import math
for i in list(range(10000)):
a = str(math.sqrt(i+100))
b = str(math.sqrt(i+268))
if len(a) == len(b) == 4 :
print(i)
一直想写isinstance(a,int) == True and isinstance(b,int) == True,
但发现math.sqrt()返回的是一个float类型,所以想判断整数的float类型是4个字符长度,非整数平方根肯定是超过4个的 刚学numpy,试着用一下
import numpy as np
a = np.arange(-100,10000) # 负数不能开方
b = np.sqrt(a+100)
c = np.sqrt(a+268)
print(a)
前面那老兄的一行真厉害,换个角度切入更方便了
# 别人的一行解答,变成了(k-100)、k、(k+168) 这三个数
print() 流月飞星 发表于 2017-4-13 10:46
这道题为什么要余1。。 求思路
整数%1得0, 小数会带尾巴