【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);
	}

}

 

posted @ 2019-01-14 18:01  qxlxi  阅读(1426)  评论(0编辑  收藏  举报