问题是: 在下面的等式中,x,y和n是正整数。
1 / x + 1 / y = 1 / n
对于极限L,我们将F(L)定义为满足x 我们可以验证F(15)= 4和F(1000)= 1069。
找到F(1012)。 我决定测试我是否能找到F(15) 但是没有任何内容存储在列表中。count = 0
limit = 15
storage = []
x = 1
y = 1
for x in range(limit + 1):
for y in range(limit + 1):
x += 1
y += 1
n = x*y/(x+y)
condition = x*y%(x+y)
if (condition == 0 and x<y and y<limit):
count += 1
storage.append(x)
storage.append(y)
storage.append(n)
print (storage)
print (count)
答案 0 :(得分:1)
您正在修改x
循环中的y
。 x += 1
属于y
循环之前。
您可以有效地使用range()
来完全消除增量。 range(1,limit+1)
将从1开始。
您也没有正确比较y
和limit
。 y <= limit
。
程序的略微修改版本:
count = 0
limit = 15
storage = []
x = 1
y = 1
for x in range(1,limit + 1):
for y in range(1,limit + 1):
n = x*y/(x+y)
condition = x*y%(x+y)
if (condition == 0 and x<y and y<=limit):
count += 1
storage.append(x)
storage.append(y)
storage.append(n)
print (storage)
print (count)
答案 1 :(得分:0)
即使试图在10 ^ 5时计算出这个数字,你也会有一次蛮力的方法。我一直试图想出这个。
以下是我所知道的:
1 / x + 1 / y = 1 / n可以改写为
1 /(n + a)+ 1 /(n + b)= 1 / n 这可以减少到ab = n ^ 2
(这是我用来解决问题108和110的方法) 通过得到n ^ 2的所有除数,你可以求解'a'和'b',但只有当n是一个固定的整数时,这才有用。
我还没弄明白这对454有什么帮助。