解题思路:
从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语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:869 |
字符串问题 (C语言代码)浏览:1521 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:591 |
有关字符,字符串的输入输出函数说明浏览:479 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:541 |
淘淘的名单 (C语言代码)浏览:1229 |
C二级辅导-等差数列 (C语言代码)浏览:824 |
JAM计数法 (C语言代码)浏览:671 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:532 |
【偶数求和】 (C++代码)浏览:701 |