C趣味编程百例(08)亲密数
26.亲密度数
如果整数A(包括1,不包括A本身)的所有因子之和等于B;且整数B的所有因子(包括1,不包括B本身)之和等于A,则整数A和B称为亲密数。找到所有3000以内的亲密号。
*题目分析及算法设计
根据亲密度数的定义,判断数A是否有亲密度数,我们只需要计算A的所有因子的累积和为B,然后计算B的所有因子的累积和为N,如果N等于A,就可以确定A和B是亲密度数。计算数A的因子的算法:
i(i=1~a/2)依次与A进行模运算,如果模运算的结果等于0,则I是A的因子;否则I不是a的因子.
*程序描述和注释
# include
void main()
{
int a,I,b,n;
printf("存在以下小于3000的友好数字对:\ n ");
for(a = 1;a {
for(b=0,I = 1;我如果(!(a % I))b+ = I;/*计算B的因子,因子之和存放在n*/
for(n=0,I = 1;我如果(!(b % I))n+= I;
if(n==a&&a printf("%4d..%4d”,a,b);/*如果n=a,那么a和b是一对亲密数,输出*/
}
*运行结果
有以下友好数对小于3000:
220..
0条评论