我的问题是关于Dedekind数的。我想编写一个代码,打印出Dedekind数字的前七个数字,因为它使用的是Andrzej Kisielewicz于1988年给出的公式(https://en.wikipedia.org/wiki/N%C3% BAmero_de_Dedekind#cite_note-Kis88-5),但我尝试实现了它仅使用零值。然后,我尝试使用7的值,但是代码继续处理了很长时间,直到停止了它。总之,为什么我的代码只适用于0?
这是我的代码:
import math
x=int(input("Escriba un número... "))
def b(x, y):
calc=(int(x/(2**y))-2*(int(x/(2**(y+1)))))
return calc
def Dedekind(x):
carry=0
carry2=1
carry3=1
carry4=1
k=1
j=1
i=0
m=0
for i in range(k, ((2**(2**x))+1)):
for e in range(j, (((2**x)-1)+1)):
for o in range(i, (j-1)+1):
b1=b(k,i)
b2=b(k,k)
b3=b(i, m)
b4=b(j,m)
for u in range(m, (math.log2(i)+1)):
carry4*=(1-b3+(b3*b4))
carry3*=(1-(b1*b2))+carry4
carry2*=carry3
carry+=carry2
return carry
print(Dedekind(x))