$$ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Self-defined math definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math symbol commands \newcommand{\intd}{\,{\rm d}} % Symbol 'd' used in integration, such as 'dx' \newcommand{\diff}{{\rm d}} % Symbol 'd' used in differentiation ... $$

C语言:亲密数对

题目

输入 N,N 在 2 至 3000 之间,求 2 至 N 中的亲密数对。所谓亲密数对,就是 A 的因子和等于 B,B 的因子和等于 A,且 A≠B。

如 48 和 75 是亲密数对。48 的因子和为 2+3+4+6+8+12+16+24=75,而 75 的因子和为3+5+15+25=48。
 例如:
  输入:200
  输出:48 75
     75 48
     140 195
     195 140


代码


  #include<stdio.h>

  int get_factor(int x){
    int arr[1000];
    int sum=0,flg=0;
    int i;

    for(i=0;i<1000;i++)arr[i] = 0;

    for(i=2;i<x;i++){
      if(x%i==0){
      arr[flg] = i;
      flg += 1;
      }
    }

    for(i=0;i<1000;i++){
      sum += arr[i]; 
    } 

    return sum;
  }

  int main(){
    int get_factor(int);
    int n,i,j;	

    scanf("%d",&n);	

    for(i=3;i<=n;i++){
      j = get_factor(i);
      if(i!=j&&j==get_factor(i)&&i==get_factor(j))printf("%d %d\n",i,j);
    }

    return 0;
  }
posted @ 2022-11-18 11:34  Shin404  阅读(582)  评论(0)    收藏  举报