解题思路:

注意事项:

参考代码:#include<stdio.h>                      //所以我想题目就是关于A的循环,把每次循环中A的因数和赋值给B,再判断B的因数和是否等于A
int main()
{
 int sum1,sum2;
 int A,i,j;
 for(A=1;A<=3000;A++)
 {
  sum1=0;
  for(i=1;i<A;i++)
  {
   if(A%i==0)
   {
    sum1+=i;              //求A的因数和sum1.
   }
  }
  sum2=0;
  for(j=1;j<sum1;j++)          //括号里的sum1就是B,因为题目说:A的因数和=B(所以假设A的因数和等于B成立)
  {
   if(sum1%j==0)
   {
    sum2+=j;            //求B(sum1)的因数和.
   }
  }
  if(sum2==A && A<sum1)       //判断B(sum1)的因数和是否等于A与亲密数对是否符合(A<B(sum1))的模式
  printf("(%d,%d)",A,sum1);
 }
 return 0;
}

点赞(6)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

胖胖 5年前 回复TA
#include<stdio.h>
main()
{
    int i,sa,sb,j;
    for(i=1;i<=3000;i++)
    {
        sa=0,sb=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0) sa+=j;
        }
        for(j=1;j<sa;j++)
        {
            if(sa%j==0) sb+=j;
        }
        if(sa==sb&&i<sa)
        {
            printf("(%d,%d)",i,sa);
        }
    }
}
我这个为什么得不到正确答案