这是我的任务:
求三元组a,b,c∈{x | x∈Z且450> x> 0}
满足以下关系:
a =如果b是偶数:c + 11但是 如果b是奇数:2c-129
b =(a * c)mod 2377
- c =(从k = 0到a-1的b-7k的总和)+ 142
醇>
这是我到目前为止所尝试的:
备选方案1:
for a in range(1,449):
for b in range(1, 449):
for c in range(1, 449):
#a
if b%2==0:
a=c+11
elif b%2!=0:
a=2*c-129
#b
b = (a*c)%2377
#c
k = 0
c0=0
upper = a-1
for i in range(0, upper+1):
c0 = b-7*i
#k+=1
c = c0 + 142
print a, b, c
备选方案2:
def a_func(x):
if (b_func(x)%2==0):
return c_func(x)+11
else:
return 2*c_func(x)-129
def b_func(x):
return a_func(x)*c_func(x) % 2377
def c_func(x):
k=0
c0=0
upper = a_func(x)-1
for i in range(0, upper+1):
c0 = b_func(x) - 7 * k
k+=1
return c0+142
def all(x):
return a_func(x), b_func(x), c_func(x)
for x in range(1, 449):
print all(x)
它们似乎都不起作用。
答案 0 :(得分:0)
请多付出努力。第一个程序打印449 * 449 * 449行输出。显然有些完全错误。
这项任务背后的想法是,你必须检查三个方程式是否成立。
所以主程序可以是以下结构:
for a in range(1,449):
for b in range(1, 449):
for c in range(1, 449):
if equation_one_holds and equation_two_holds and equation_three_holds:
print a, b, c
您现在的任务是实施检查。作为提示,equation_two_holds
可以是(b == (a * c) % 2377)
。对equaltion_one_holds
和equation_three_holds
的检查稍微复杂一些,但只需稍加努力,您就可以对其进行管理。