zoukankan      html  css  js  c++  java
  • 100c之26: 寻找亲密数

    问题

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

    分析

    穷举。 我们知道一个数可能的第二大因子是其一半。穷举过程可以使用这一限制降低循环次数。

    解决方案

     1:  /**
     2:   * @file   026.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Sun May 26 16:43:14 2013
     5:   * 
     6:   * @brief
     7:   * 
     8:   * 
     9:   */
    10:  
    11:  #include <stdio.h> 
    12:  
    13:  int main(int argc, char *argv[])
    14:  {
    15:      int a,i,b,n;
    16:  
    17:      printf ("the friend numbers bellow 4000 are\n");
    18:  
    19:      for (a=1; a <= 4000; ++a)
    20:      {
    21:          for (b=0,i=1; i <= a/2; ++i)
    22:              if (!(a%i)) b+=i;
    23:          for (n=0,i=1; i <= b/2; ++i)
    24:              if (!(b%i)) n+=i;
    25:          if (n==a && a<b)
    26:              printf ("%d is friend with %d\n", a,b);
    27:      }
    28:      return 0;
    29:  }
    30:  
    

    最终结果

    220 is friend with 284
    1184 is friend with 1210
    2620 is friend with 2924
    
  • 相关阅读:
    3.24课堂
    3.23作业
    3.23课堂
    3.20作业
    3.20课堂
    3.19作业
    3.19课堂
    3.18课堂
    3.18作业
    46、表与表的连接
  • 原文地址:https://www.cnblogs.com/chaolong/p/3100174.html
Copyright © 2011-2022 走看看