按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法:
用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为a的一个因子;否则i就不是a的因子。
以下是源代码:
//亲密数
#include <stdio.h>
int main()
{
int a, i, b, n;
printf("There are following friendly - numbers 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\n", a, b);
}
}
return 0;
}