C++中求亲密数对,用类和对象

打开解决方案文件proj3,此工程文件包含了3个文件,分别是头文件“Number_Intimacy.h”、源程序文件“Number_Intimacy.cpp”和源程序文件“main.cpp”。在头文件“Number_Intimacy.h”中声明了一个亲密数类Intimacy,用于求区间[min,max]内的亲密数对。若整数a的所有正因子之和(包括1,不包括a)与整数b的所有正因子之和(包括1,不包括b)相等,则称整数a和b是亲密数对。如20和38的正因子之和都为22,所以20和38是亲密数对;23和29的正因子之和都为1,所以23和29也是亲密数对;23和31同样是亲密数对。请将源程序文件“Number_Intimacy.cpp”中的成员函数Find补充完整,补充内容填写在”//333”与”//666”两行之间。

在main函数中输入测试数据20和40时,此时程序的输出应该是:

 输入区间的起始数:20

 输入区间的终止数:40

 20      38

 23      29

 23      31

 23      37

 27      35

 29      31

 29      37

 31      37

 [20,40]之间有8对亲密数。

[程序]

//Number_Intimacy.h

#include

using namespace std;

class Intimacy{

public:

   Intimacy(int,int);

   int Sum(int n);        // 求整数n的所有正因子之和

   void Find();           // 查寻区间内的亲密数对

private:

   int min,max;           // 表示区间[min,max]的起始数和终止数

   int count;             // 区间内亲密数的对数

};

void writeToFile(const string); // 不用考虑此语句的作用

//Number_Intimacy.cpp

#include"Number_Intimacy.h"

#pragma warning(disable:4996) // 不用考虑此语句的作用

Intimacy::Intimacy(int n1,int n2):min(n1),max(n2)

{

   count=0;

}

int Intimacy::Sum(int n)

{

   int i=1,s=0;

   while(iif(n%i==0){

                 s+=i;

          }

          i++;

   }

   return s;

}

void Intimacy::Find()

{

   int i,j;

   //********333********

   //********666********

}

//main.cpp

#include"Number_Intimacy.h"

int main()

{

   int m,n;

   cout<<"输入区间的起始数:";

   cin>>m;

   cout<<"输入区间的终止数:";

   cin>>n;

   Intimacy test(m,n);

   test.Find();

   return 0;

}

解题说明:

1、可将下列压缩文件“proj3.zip”下载到计算机中,解压后用VC2010对程序进行调试运行,即找到并双击文件“proj3.sln”打开解决方案,然后操作。

(1)源程序文件在解决方案管理器的Source Files文件夹中,头文件在Header Files文件夹中。

(2)为了避免运行结果闪退,方便调试,可在主函数“return 0;”语句前添加语句“system(“pause”);”,调试结束后再删除添加的该语句。

3、操作完成后,将答案(补充内容)填写到实验系统中。