亲密数
一、问题描述
如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
二、设计思路
1、定义变量i,a,b,n。从a开始第一层循环a=1;a<=3000;a++.
2、在a<3000成立的条件下,令b=0,i=1,i的取值范围是i<=a/2,如果a%i=0为真,则令b+=i,b为a的各因子和。
3、令n=0,i=1,i的取值范围是i<=b/2,如果b%i=0为真 ,则令n+=i,i为b的各因子和。
4、如果n=a且a<b,则a与b是一对亲密数,将其输出,直到a<=3000条件不成立为止。
三、程序流程图
四、代码实现
#include<stdio.h> void main() { int a,i,b,n; printf("There are followimg friendly--number pair smaller than 3000:\n"); for(a=1;a<3000;a++) { for(b=0,i=1;i<=a/2;i++) if(!(a%i))b+=i; for(n=0,i=1;i<=b/2;i++) if(!(b%i))n+=i; if(n==a&&a<b) printf("%4d--%4d ",a,b); } }