You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行Carmichael函数出现int与内置方法比较TypeError报错求解

报错触发原因
  • 报错的核心根源出现在n的定义环节:(p * q).bit_length语句中,bit_length是Python整数类型的内置方法,你没有添加括号执行调用,因此变量n实际存储的是方法对象,而非你预期的位长度整数值。
  • 你在函数内添加的n = int(n)语句无法生效,是因为无法直接将方法对象转换为整数,所以传入函数的n始终是非整数类型,执行到a <= n的判断逻辑时,就会出现整数和方法对象无法比较的类型错误。
修复方案
  1. 首先修正n的定义语句,添加括号调用bit_length方法拿到整数值:
n = (p * q).bit_length()
  1. 额外代码优化建议:你当前代码中判断逻辑使用的按位与运算符&,建议替换为逻辑与运算符and,二者在布尔值判断场景虽然运算结果一致,但and更符合逻辑判断的语义,也能避免后续逻辑复杂时出现运算符优先级导致的意外错误:
# 原代码
while ((gcd(a, n)) == 1) & (a <= n) :
# 修改后
while gcd(a, n) == 1 and a <= n:

内容的提问来源于stack exchange,提问作者Sammy E

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:36:03