解题思路:

从2到该数开方取大,挨个除,能整除则除数和商都是因数,加到总和上,最后判断总和与这个数是否相同,相同就是完数


注意事项:
坑:1不是完数,踩这个坑只能对91%


参考代码:

import math
x=int(input())
sum=1              #每个数都包含因数1,且不包含自身
for i in range(2,int(math.sqrt(x)+1)):        #除数范围从2到开方取大
   if x%i==0:                       #如果能整除,则为x的因数,这样可以同时得到两个因数
       sum+=i
       sum+=x//i
if sum==x and x!=1:                 #需要注意1不是完数
   print("yes")
else:
   print("no")

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区