任务和代码:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。(提示:按照亲密数定义,要判断数a是否有亲密数,
只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。
/*
文件名:main.c
作者:小风景
完成日期:2015.10.19
问题描述:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。(提示:按照亲密数定义,要判断数a是否有亲密数,
只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。)
程序输出:亲密数
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
int main()
{
int i,a,b,isum;
for(a=1;a<=3000;++a)
{
b=0;
for(i=1;i<a;++i)
{
if(a%i==0)
b+=i;
}
isum=0;
for(i=1; i<b; ++i)
{
if(b%i==0)
isum+=i;
}
if(a==isum)
{
printf("a= %d, 其因子和b=%d\n", a, b);
}
}
printf("\n");
return 0;
}
运行结果:
总结:注意题目的意思是a的因子和等于b,b的因子和等于a,包括a,b相等,但a,b不一定相等。
-------------------------------------------------------------------------------------------------------------------------------
让时间说真话,虽然我也害怕。