解题思路:
从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 人评分
C语言训练-邮票组合问题* (C语言代码)......浏览:689 |
这可能是一个假的冒泡法浏览:1071 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:613 |
不会做的浏览:954 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:798 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:906 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1368 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:565 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
震宇大神的杀毒软件 (C语言代码)浏览:1162 |