15046058134
发表于 2018-11-26 21:51:49
import math
for a in range(1,10000000,1):
c = a + 100
b = a + 268
if math.sqrt(c)%1 == 0 and math.sqrt(b)%1 ==0:
print(a)
小明禅师
发表于 2018-11-28 14:11:57
import math as m
for i in range(1,10001,1):
if m.sqrt(i+100)%1 == 0 and m.sqrt(i+268)%1 == 0:
print(i)
double-lee
发表于 2018-12-3 16:19:36
for i in range(10000):
a = int(math.sqrt(i + 100))
b = int(math.sqrt(i + 268))
if a ** 2 == i+100 and b ** 2 == i + 268:
print(i)
晓程序
发表于 2018-12-10 16:51:36
from math import*
for i in range(10000):
x = sqrt(i + 100)
y = sqrt(i + 268)
if x == int(x)and y == int(y):
print(i)
sunrise085
发表于 2018-12-19 15:07:38
普通版:先开平方取整,然后在将结果平方看看是否是原数,以判断该是是否是整数的平方。循环范围应该是从(1-100)=-99到10001。这个是比较基础的版本。程序如下:import math
for i in range(-99,10001):
temp1 = int (math.sqrt (i + 100))
temp2 = int (math.sqrt (i + 268))
if temp1 ** 2 == i + 100 and temp2 ** 2 == i + 268:
print i
改进版:其实判断一个数是否是一个整数的平方,可以不用这么麻烦,直接开平方对1求余即可。程序如下:
import math
for i in range (-99,10001):
if math.sqrt (i + 100) % 1 == 0 and math.sqrt (i + 268) % 1 == 0:
print i
进阶版:以上两版本其实相差无几。进阶版需要大幅度缩减运行时间。以上版本都是判断一个数是不是整数的平方,是正向考虑问题,我们可以逆向考虑问题,直接判断两个整数的平方差值。这样循环次数就由10000+缩减到100了。程序如下:
import math
for i in range (1,100):
if math.sqrt (i * i + 168) % 1 == 0:
print i * i - 100
此外还有变态版,可以将进阶版修改为一行代码的变态版,变态版其实和这个进阶版一样,虽然缩减代码行数,但是却降低了程序的可读性。程序如下:
print [ i * i - 100 for i in range (1,100) if (i * i + 168) ** 0.5 % 1 == 0]
nnxiaod
发表于 2018-12-31 13:56:50
from math import sqrt
def do1():
for x in range(10000):
if sqrt(x + 100).is_integer() and sqrt(x + 268).is_integer():
print(x)
if __name__ == '__main__':
do1()
nnxiaod
发表于 2018-12-31 16:44:52
echoC 发表于 2018-4-12 14:28
能说说if前面是什么思路吗,感谢~
核心就是用x表达a和y,x是整数,保证y也是整数的情况下,求a即得结果。
Xna_MT
发表于 2019-2-19 23:15:09
import math
y=0
z=0
for x inrange (1,10000):
y=int(math.sqrt(x + 100))
z=int(math.sqrt(x +268))
if y*y==x+100 and z*z==x+268:
print(x)
Sneakerjj
发表于 2019-3-4 13:55:32
import math
for i in range(-100,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,x,y)
新手zz
发表于 2019-3-6 21:56:31
流月飞星 发表于 2017-4-13 10:46
这道题为什么要余1。。 求思路
为了是个整数
新手zz
发表于 2019-3-6 22:01:46
solomonxian 发表于 2017-4-19 18:36
刚学numpy,试着用一下
前面那老兄的一行真厉害,换个角度切入更方便了
能解释一下那个一行的解答吗
lwy520
发表于 2019-3-7 19:24:02
import math
for i in range(10000):
if (int((math.sqrt(i+100)))**2 == (i+100)) & (int((math.sqrt(i+268)))**2 == (i+268)):
break
if i==9999:
if (int((math.sqrt(i+100)))**2 == (i+100)) & (int((math.sqrt(i+268)))**2 == (i+268)):
print(i)
else:
print("0~10000之间无合适值,请扩大范围查找!")
else:
print(i)
lwy520
发表于 2019-3-7 20:42:52
import math
x=100
y=268
i=0
j=-int(math.sqrt(x))
while(int(math.sqrt(y+i)-math.sqrt(x+i))):
if (math.sqrt(y+i) % 1 ==0) & (math.sqrt(x+i) % 1 ==0):
print(i)
i=int(math.sqrt(x)+j)**2-x
j+=1
lwy520
发表于 2019-3-7 20:56:11
jerryxjr1220 发表于 2017-3-25 19:54
一行代码求解:
>>> print
[-99, 21, 261, 1 ...
请原谅我笨{:5_96:}
print
SyntaxError: invalid syntax
yu123py
发表于 2019-4-26 16:19:22
本帖最后由 yu123py 于 2019-4-26 16:21 编辑
import math
n = 0
while n < 10001:
if math.sqrt(n + 100) - int(math.sqrt(n + 100)) == 0 and math.sqrt(n + 268) == int(math.sqrt(n + 268)):
print(n)
n += 1
小猪猪妍
发表于 2019-7-4 09:08:17
import math
n=1
while (1):
a=n+100
b=n+268
n+=1
if math.sqrt(a)-int(math.sqrt(a))==0:
if math.sqrt(b)-int(math.sqrt(b))==0:
print(n)
print(a,b,math.sqrt(a),math.sqrt(b))
小猪猪妍
发表于 2019-7-4 09:11:57
import math
n=-100
while (1):
n+=1
a=n+100
b=n+268
if math.sqrt(a)-int(math.sqrt(a))==0:
if math.sqrt(b)-int(math.sqrt(b))==0:
print(n)
# print(a,b,math.sqrt(a),math.sqrt(b))
糠爸
发表于 2019-7-4 12:16:08
#题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?
#程序分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。
#提示:使用 math 模块。
for value in range(10001):
temp1 = value + 100
temp2 = value +268
for check1 in range(1001):
if temp1 == check1 ** 2:
for check2 in range(1001):
if temp2 == check2 ** 2:
print(value)
见笑!没有学到math模块哈!
山岂乎不在高
发表于 2019-7-5 18:10:01
import math
def nn():
m = int(pow(268,1/2))+1
for i in range(m,200):
b = i*i
if b - (i-1)*(i-1)> 268:
print("此题无解")
return
j = i+1
while j*j-b<268:
if j*j-b == 168:
return i*i-100
j += 1
if __name__ == '__main__':
a = nn()
print('要求的数是:',a)
无法如水
发表于 2019-7-10 16:48:24
gopythoner 发表于 2017-4-1 00:09
我写的是这个
看了后面的答案,发现少了-99
既简单又容易理解{:5_92:}