xt3-20-1.cpp
上传用户:liubin
上传日期:2022-06-13
资源大小:85k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include <iostream>
  2. using namespace std;
  3.  int main()
  4.  {const int m=1000;       // 定义寻找范围 
  5.   int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
  6.   int i,a,n,s;
  7.   for (a=2;a<=m;a++)      // a是2~1000之间的整数,检查它是否为完数 
  8.    {n=0;                  // n用来累计a的因子的个数 
  9.     s=a;                  // s用来存放尚未求出的因子之和,开始时等于a 
  10.      for (i=1;i<a;i++)    // 检查i是否为a的因子 
  11.        if (a%i==0)        // 如果i是a的因子 
  12. {n++;                 // n加1,表示新找到一个因子 
  13.  s=s-i;               // s减去已找到的因子,s的新值是尚未求出的因子之和 
  14.  switch(n)            // 将找到的因子赋给k1,...,k10 
  15.   {case 1:
  16.       k1=i;  break;   // 找出的笫1个因子赋给k1 
  17.    case 2:
  18.       k2=i;  break;   // 找出的笫2个因子赋给k2 
  19.    case 3:
  20.       k3=i;  break;   // 找出的笫3个因子赋给k3 
  21.    case 4:
  22.       k4=i;  break;   // 找出的笫4个因子赋给k4 
  23.    case 5:
  24.       k5=i;  break;   // 找出的笫5个因子赋给k5 
  25.    case 6:
  26.       k6=i;  break;    // 找出的笫6个因子赋给k6 
  27.    case 7:
  28.       k7=i;  break;   // 找出的笫7个因子赋给k7 
  29.    case 8:
  30.       k8=i;  break;    // 找出的笫8个因子赋给k8 
  31.    case 9:
  32.       k9=i;  break;   // 找出的笫9个因子赋给k9 
  33.    case 10:
  34.       k10=i;  break;   // 找出的笫10个因子赋给k10 
  35.   }
  36. }
  37.     if (s==0)              // s=0表示全部因子都已找到了 
  38.      {cout<<a<<" is a 完数"<<endl;
  39.   cout<<"its factors are:";
  40.       if (n>1)  cout<<k1<<","<<k2;    // n>1表示a至少有2个因子 
  41.       if (n>2)  cout<<","<<k3; // n>2表示至少有3个因子,故应再输出一个因子 
  42.       if (n>3)  cout<<","<<k4; // n>3表示至少有4个因子,故应再输出一个因子 
  43.       if (n>4)  cout<<","<<k5;        //  以下类似 
  44.       if (n>5)  cout<<","<<k6;         
  45.       if (n>6)  cout<<","<<k7;         
  46.       if (n>7) cout<<","<<k8;         
  47.       if (n>8) cout<<","<<k9;         
  48.       if (n>9) cout<<","<<k10;         
  49.       cout<<endl<<endl;
  50.     }
  51.    }
  52.   return 0;
  53.  }