类型错误:"int"和"builtin_function_or_method"的实例之间不支持"<=",我不确定这意味着什么



这个函数的目的是计算Carmichael函数--我试图在函数的顶部添加n=int(n(,并在条件句中直接将n转换为int,但我仍然遇到了类似的错误。我不明白为什么程序不将n解释为整数

def carmichael(n: int) -> int:
k = 2
a = 1
alist = []
while not ((gcd(a, n)) == 1):
a = a + 1
while ((gcd(a, n)) == 1) & (a <= n) :
alist.append(a)
a = a + 1
while not ((gcd(a, n)) == 1):
a = a + 1
timer = len(alist)
while timer >= 0:
for a in alist:
if (a**k) % n == 1:
timer = timer - 1
if timer < 0:
break
pass
else:
timer = len(alist)
k = k + 1
return k

其中n定义为的行

n = (p * q).bit_length

函数被称为的行

lambdaN = carmichael(n)

错误消息

TypeError: '<=' not supported between instances of 'int' and 'builtin_function_or_method'

问题是您正在传递一个函数,而不是一个整数作为n参数。

n = (p * q).bit_length

您忘记了bit_length函数后面的括号()。如果没有括号,你就不是调用函数,你只是引用它

相关内容

最新更新