等差数列的求法:

#include<stdio.h>//求等差数列
main()
{
	int i,j,number,n;
	for(number=1;number<6;number++)
		for(n=1;n<4;i++)
			if((4*number+6*n==26)&&(number*(number+n)*(number+2*n)*(number+3*n)==880))
			{
				printf("结果是:\n");
				for(j=1;j<=20;j++)
				{
					printf("%3d",number);
					number+=n;
					if(j%5==0)
						printf("\n");
				}
			}

}

//结果:2 5 8 11 14 
	17 20 23 26 29
	32 35 38 41 44
	47 50 53 56 59

亲密数:

定义:如果整数a的全部因子(不包括a)之和等于b,而且整数b的全部因子(不包括b)之和等于a,则将a和b称为亲密数。例如220=1+2+4+5+10+11+20+22+44+55+110=284。下面是用c代码实现该功能。

源代码:


#include<stdio.h>
main()
{
	int i,j,k,sum1,sum2;
	for(i=1;i<=10000;i++)
	{
		sum1=0;
		sum2=0;
		for(j=1;j<i;j++)
			if(i%j==0)
				sum1+=j;
		for(k=1;k<sum1;k++)
			if(sum1%k==0)
				sum2+=k;
		if(sum2==i&&i!=sum1&&i<sum1)
			printf("%5d=>%5d\n",i,sum1);
	}
}

实现的方法和思路是(个人观点,不喜勿喷算法的效率有点低...):

采取穷举法对10000以内的数进行逐个求因子,并求出所有因子之和sum1,再对所求的和sum1求因子,并再次求所有的因子之和sum2,此时按亲密数的要求进行进一步的筛选并求出结果。