【c语言趣味编程100例】亲密数
亲密数:如果整数A的全部因子(包括1 不包括A本身)之和等于B
且整数B的全部因子(包括1 不包括B本身)之和等于A
则将整数A和B称为亲密数 求3000以内的全部亲密数
思路:
亲密数 求3000以内的数,定义一个变量b 保留每次b的因子之和,
然后在去遍历b的因子之和 存放于n,接着去判断n==b 如果两数相等 说明是亲密数 否则不是亲密数
程序的关键在于:获取a和b的因子数 在去判断 并且判断的时候 应该注意一点就是a应该小于b
#include<stdio.h>
void main(){
/*
亲密数:如果整数A的全部因子(包括1 不包括A本身)之和等于B
且整数B的全部因子(包括1 不包括B本身)之和等于A
则将整数A和B称为亲密数 求3000以内的全部亲密数
思路:
亲密数 求3000以内的数,定义一个变量b 保留每次b的因子之和,
然后在去遍历b的因子之和 存放于n,接着去判断n==b 如果两数相等 说明是亲密数 否则不是亲密数
程序的关键在于:获取a和b的因子数 在去判断 并且判断的时候 应该注意一点就是a应该小于b
**/
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);
}
}