亲密数

一、问题描述

如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。

二、设计思路

1、定义变量i,a,b,n。从a开始第一层循环a=1;a<=3000;a++.

2、在a<3000成立的条件下,令b=0,i=1,i的取值范围是i<=a/2,如果a%i=0为真,则令b+=i,b为a的各因子和。

3、令n=0,i=1,i的取值范围是i<=b/2,如果b%i=0为真 ,则令n+=i,i为b的各因子和。

4、如果n=a且a<b,则a与b是一对亲密数,将其输出,直到a<=3000条件不成立为止。

三、程序流程图

 

四、代码实现

#include<stdio.h>
void main()
{
int a,i,b,n;
printf("There are followimg friendly--number 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 ",a,b);
}
}

 

posted @ 2023-05-19 23:20  jais  阅读(32)  评论(0编辑  收藏  举报