查找集合的三元组,Python
Find triplet for set, Python
这是我的作业:
Find the triplet a, b, c ∈ {x | x ∈ Z and 450 > x > 0}
Such that the following relations is satisfied:
a = if b is even: c+11 BUT
if b is odd: 2c-129
b = (a * c) mod 2377
- c = (Sum of b-7k from k=0 to a-1) + 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)
None 其中似乎有效。
请再努力一点。第一个程序打印 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
的检查稍微复杂一些,但只要稍加努力,您就可以搞定。
这是我的作业:
Find the triplet a, b, c ∈ {x | x ∈ Z and 450 > x > 0}
Such that the following relations is satisfied:
a = if b is even: c+11 BUT if b is odd: 2c-129
b = (a * c) mod 2377
- c = (Sum of b-7k from k=0 to a-1) + 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)
None 其中似乎有效。
请再努力一点。第一个程序打印 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
的检查稍微复杂一些,但只要稍加努力,您就可以搞定。