Question:
将整数设计为一个类,将整数相关的常见数学运算设计为类的接口并进行实现,如求与给定值的最大公约数、最小公倍数、枚举所有因子等。
Answer & Code:
#include "math.h"
#include "vector"
using std::vector;
/定义自然数类
class NaturalNumber{
public:
NaturalNumber(unsigned long int n=0):num(n){}
//该部分分为两部分:
//NaturalNumber(unsigned long int n=0) //定义非默认构造函数
// :num(n){} // 对数据成员进行初始化(num位于private中)
unsigned long int GreatestCommonDivisor(NaturalNumber & nn);//求解最大公约数
unsigned long int LeaseCommonMultiple(NaturalNumber & nn);//求解最小公约数
// NaturalNumber & nn 意为: NaturalNumber引用名为nn,即之后nn就代表NaturalNumber
int GetFactors(vector <unsigned long int> & factors); //求所有因子,存储在
factors中,函数返回因子个数
unsigned long int GetNumber(){return num;}
//……其它外部接口
private:
unsigned long int EUCLID(NaturalNumber &a