问题描述
编写一程序,求出1000以内的所有完全数
完全数解释:如果一个数恰好等于它除自身外的所有因子之和,则称该数为完全数。如6=1+2+3,则6为完全数。
分析
完全数问题可以进行分解,先对给定的数求出所有因子,再检验因子之和是否等于该数。
源程序
C语言
使用for语句
#include<stdio.h>int main(){int num=2,i;for(num;num<1000;num++){int sum=0;for(i=1;i<num;i++)if(num%i == 0)sum+=i;if(sum==num)printf("完全数有:%d",sum);}return 0;}
使用while语句:
#include<stdio.h>int main(){int num=2,i;while(num<1000){int sum=0;for(i=1;i<num;i++)if(num%i == 0)sum+=i;if(sum==num)printf("完全数有:%d",sum);num++;}return 0;}
python
for num in range(2,1000):sum = 0for i in range(1,num//2+1):if num%i == 0:sum += i #将待检查数的所有因子相加求和if sum == num:print("%d"%num)'''628496'''
使用列表将因子和完整数存储起来:
perfects = []
for num in range(2,1000):
yinzi = []
for i in range(1,num):
if(num%i ==0):
yinzi.append(i)
num_sum = sum(yinzi)
if num_sum == num:
perfects.append(num)
print(perfects)
'''
[6, 28, 496]
'''
回文数、亲密数等
根据这些数字定义,将问题分解,一般是分离数字的位数、因子等,然后按照定义进行判断即可
