Listing 1: BigNum header file
// (c) 1996 tony breitzman // BigNum.h - a class for operating on arbitrarily large integers # include <fstream.h> # include <stdlib.h> # include <string.h> const int BASE = 10000; class BigNum{ protected: int *x; //this array holds the BigNum char positive; //sign flag long exp; //array index of most significant digit public: BigNum(char *s); //construct from string BigNum(long k=0,long new_sz=0); //construct from long BigNum(const BigNum &b,long new_sz=0); //copy constructor ~BigNum(){delete[] x;} //destructor friend ostream& operator<<(ostream & os, BigNum &b); //for printing BigNum & operator=(const BigNum &b); //assignment BigNum & operator=(long k); //assignment from long BigNum operator+(const BigNum & b); //addition BigNum operator-(const BigNum &b); //subtraction BigNum operator/(const BigNum &den); //divide bignums BigNum operator/(long denom); //divide bignum by long BigNum operator*(const BigNum & b); //bignum multiplication BigNum operator^(const long n); //exponentiation //easy routines; these are easily implemented and are not //included here to save space. The complete listings may be //obtained from my web page. BigNum operator-(); //unary minus BigNum operator+(const long k); //addition with long BigNum operator-(const long k); //Bignum - long BigNum operator*(long k); //multiply bignum * long BigNum operator%(const BigNum &denom);//remainder of division long operator%(const long denom); //rem. Of bignum / long char operator<=(const BigNum &b); char operator>(const BigNum &b); char operator>=(const BigNum &b); char operator==(const BigNum &b); char operator<(const BigNum &b); char operator<=(const long k); char operator>(const long k); char operator>=(const long k); char operator==(const long k); char operator<(const long k); char is_zero(); //returns 1 if value of BigNum is zero void asl(const long n); //arithmetic shift left; equivalent to / multiplying by base n times void asr(const long n); //arithmetic shift right long BigNum2Long(); //convert a bignum to a long //if possible BigNum abs(const BigNum &b); //absolute value void random(const int size); //makes a random bignum of size digits }; // End of File