python - 使用函数的友好数字
问题描述
我试着看看这对友好的数字是多少(20000以下)。(友好数:两个不同的数相关联,以至于每个数的真因数之和等于另一个数。(一个数的真因数是该数的一个正因数,而不是该数本身。例如,真因数6 的除数是 1、2 和 3。)所以我编写了代码..并进行了调试。
def amicable(num):
a=1
for i in range(2,num):
if num%i==0:
a=a+i
return a
for j in range(2,20000):
amicable(j)
for k in range(2,20000):
amicable(k)
if amicable(j)==k and amicable(k)==j and j!=k:
print(j,'Amicable',k)
它有效,但它不打印任何东西。问题是什么?
解决方案
我认为你的代码,除了amicable
函数,应该在逻辑上和语法上进行更改。
您执行许多没有目的的函数调用:
for j in range(2,20000): amicable(j) # This call returns integer value, but result of this call is not used anywhere for k in range(2,20000): amicable(k) # Same as above
if 语句在逻辑上是正确的,但在语法上是不正确的。你有一个错字
amicalbe(k)==j
->amicable(k)==j
您要检查数字 和 对的所有组合
j
,因此您必须对每对数字和k
执行 if 语句:j
k
for j in range(2,20000): for k in range(2,20000): if amicable(j)==k and amicable(k)==j and j!=k: print(j,'Amicable',k) # prints for ex. 220 Amicable 284
您之前所做的是仅对 and 的“最后分配”值执行 if 语句
j
,k
因为在执行 for-loop iterator-variable 后具有其“最后分配”值:for value in range(2, 20000): pass print(value) # prints "lastly assigned" value: 19999
推荐阅读
- c# - 日期格式的正则表达式
- python - 从 QTableView 单元格 DisplayRole 填充上下文菜单
- ios - Alamofire 根据输入更改多部分/表单数据编码
- javascript - AttributeError: 'list' 对象没有使用 Selenium 和 Python 的属性 'click'
- ios - 带有搜索栏动画故障的大标题
- c# - C# MVVM,等待一些事件触发并继续更新 UI
- javascript - JavaScript 中的 `async/await` 中的 `return timer` 和 `clearInterval(timer)` 有什么区别?
- java - 使用 testrail api 在 java 中创建测试运行
- opengl - OpenGL 的自定义混合方程(着色器)
- python - 我的python项目中的字符串浮动错误我很难过