python - Python中的下一个完美数字函数
问题描述
我想要做什么:如果一个数字的除数之和等于这个数字,我想打印它。如果不是,我想检查下一个数字是否为真,并打印满足该条件的最小数字。我有这个:
def next_perfect(n):
sum=0
for d in range(1, n):
if n%d==0:
sum=sum+d
if sum==n:
return n
else:
sum=0
n=n+1
for d in range(1, n):
if n%d==0:
sum=sum+d
if sum==n:
return n
else:
print(next_perfect(25))
例如:
print(next_perfect(25))
它应该检查 25,然后检查 26、27、28 并打印 28。我不知道如何结束它。我希望这个循环回到第一个“else”并再次开始检查下一个数字的条件,总是在数字不好的情况下。
解决方案
使用while
循环,return
当您找到所需的数字时:
def next_perfect(n):
while True:
total=sum(d for d in range(1, n) if n%d==0)
if total==n:
return n
n=n+1
>>> next_perfect(25)
28
或递归:
def next_perfect(n):
total=sum(d for d in range(1, n) if n%d==0)
if total==n:
return n
else:
return next_perfect(n+1)
推荐阅读
- android - 如何从 android studio 3.2 中删除 generatedJava
- algorithm - 计算机算法的可扩展性
- powerbi - Power BI - 通过表 A 的第 1 列中的条目重命名表 B
- button - 在哪里可以找到要在 vuetify 中使用的图标列表?
- c++ - 通过 const 引用获取字符串
- amazon-web-services - AWS ec2 实例线程饥饿或时钟跳跃
- ios - 如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值
- angularjs - Angular 5 和遗留的 AngularJs 应用程序可以共存吗?
- visual-studio - 新(“sdk 风格”)与旧项目格式的 MsBuild 条件
- mysql - 在本地下载远程数据库并从该 mysql 转储文件创建一个新数据库