希望可以写的简单些,刚学Python两个月
C语言完整代码,稍微修改一下语法就可以了:
#include <stdio.h>
/*
7、一个数如果刚好与它的所有的因子之和相等,则称该数为完数,如6=1+2+3,求出1000以内的所有完数 提示:用循环判断1-n之间的数是否为n的因子,是的话累加,要用到双重循环
因子:除了它本身约数
*/
void main(){
int i,j;
int num;//因子之和
for(i=2;i<=1000;i++){
num = 0;
//printf("%d的因子如下:",i);
for(j=2;j<=i;j++){ //j代表i对应的任何一个可能的因子
if(i %j == 0){
num += i/j; //3,2,1
//printf("%d+",i/j);
}
}
//printf("\n");
//判断因子之和是否和该数相等
if(num==i){
printf("%d是完数\n",i);
}
}
}
for i in range(1,1000):
arr = [x for x in range(1,i//2+1) if i%x==0] #找出i的因子
if sum(arr) == i: #判断i的因子之和等于i
print(i,"的因子:",arr)
输出
6 的因子: [1, 2, 3]
28 的因子: [1, 2, 4, 7, 14]
496 的因子: [1, 2, 4, 8, 16, 31, 62, 124, 248]
你自己能写到哪个程度呢? 可以参考这个: https://blog.csdn.net/dou_being/article/details/104357993
# -*- coding: utf-8 -*-
def wanshu():
for i in range(2, 1000):
yinzi = [j for j in range(1, i / 2 + 1) if i % j == 0]
if sum(yinzi) == i:
print(i, "its factors are ", yinzi)
if __name__ == "__main__":
wanshu()
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632