定义:
如果a的因子和等于b,b的因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对。
/*
主题:寻找亲密数对
作者:Karl
邮箱:nixindong@hotmail.com
开发环境:Visual Studio
开发语言:C
*/
#include <stdio.h>
int factor(int n);
int main(void)
{
int i, factor_sum_first, factor_sum_second;
for (i = 1; i <= 10000; i++)
{
//首先得到i的因子之和factor_sum_first
factor_sum_first = factor(i);
if (factor_sum_first < 10000)
{
//对factor_sum_first求因子之和factor_sum_second
factor_sum_second = factor(factor_sum_first);
/*
根据亲密数条件筛选,这里i代表亲密数的第一个数,
factor_sum_first代表亲密数的第二个数
*/
if (factor_sum_second == i && i != factor_sum_first && i < factor_sum_first)
{
printf("%d和%d是亲密数\n", i , factor_sum_first);
}
}
}
return 0;
}
/*
函数名称:factor
函数功能:返回一个正整数的因子之和
参数:n
返回值:因子之和(不包括其自身)
*/
int factor(int n)
{
int i = 1;
int sum = 0;
while(i < n)
{
if (n %i == 0)
{
sum += i;
}
i++;
}
return sum;
}
运行结果: