等差数列的求法:
#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,此时按亲密数的要求进行进一步的筛选并求出结果。