大資料類

兆頁發表於2013-08-04

對於大數運算向來都是比較困難的,尤其是現在主流的大質數分解加密法更是難以破解(過於耗費時間),本例將帶你走進大數運算的世界,自帶普通的質數檢測,方便好用。

自定義的大數運算類,根據string字串構造,運算速率較快,過載多種操作符便於使用。

下面是標頭檔案(CLong_Date.h):

//
//  CLong_Date.h
//  CLong_Date
//
//  Created by yaoshun on 13-7-23.
//  Copyright (c) 2013年 yaoshun. All rights reserved.
//

/*
 版本號:v2.1
 作者:ys
 日期:2013/8/4
 */

#ifndef __CLong_Date__CLong_Date__
#define __CLong_Date__CLong_Date__

#include <iostream>
#include <vector>
#include <string>

class CLong_Date {
public:
    CLong_Date(std::string);
    ~CLong_Date();
    
    friend std::ostream & operator<<(std::ostream &,
                                    const CLong_Date &);
    friend bool operator<(CLong_Date &pro, CLong_Date &behind);
    friend bool operator>(CLong_Date &pro, CLong_Date &behind);
    friend bool operator==(CLong_Date &pro, CLong_Date &behind);
    friend bool operator!=(CLong_Date &pro, CLong_Date &behind);
    friend bool operator<=(CLong_Date &pro, CLong_Date &behind);
    friend bool operator>=(CLong_Date &pro, CLong_Date &behind);
    CLong_Date operator*(const CLong_Date &);
    CLong_Date operator/(const CLong_Date &);
    CLong_Date operator+(const CLong_Date &);
    CLong_Date operator-(const CLong_Date &);
    CLong_Date operator%(const CLong_Date &);
    CLong_Date operator++();                    //後置操作
    CLong_Date operator--();
    const CLong_Date operator++(int);           //前置操作,返回值不能做左值
    const CLong_Date operator--(int);
    CLong_Date operator+=(const CLong_Date &);
    CLong_Date operator-=(const CLong_Date &);
    
    int CheckSign();                            //檢查是否為正數
    unsigned long GetSize();                    //獲得大小
    void Connect(const CLong_Date &);           //連結兩個CLong_Date
    CLong_Date GetSonHead(unsigned long len);   //獲得子鏈,從頭數
    CLong_Date GetSonTail(unsigned long len);   //獲得子鏈,從尾部數
    CLong_Date GetSon(unsigned long head,unsigned long tail);
    CLong_Date GetRemainder();                  //獲得餘數,預設為0
    bool CheckPrimeNumber();                    //檢查是不是質數
    CLong_Date Sqrt();                          //用二分法算平方根
    CLong_Date Abs();                           //取絕對值
protected:
    CLong_Date(std::vector<int>);               //內建建構函式
private:
    //大資料錯位相加
    std::vector<int> Max_Aid_Max(std::vector<
                                 std::vector<int> > &result);
    //大資料拆分成錯位相加,最後一位表示是否校驗
    std::vector<int> Max_Max_vector(std::vector<int> &A,
                                    std::vector<int> &B,
                                    bool check);
    //去除頭元素0,全部清空!
    std::vector<int> CutZero(std::vector<int> vet);
    
    std::vector<int> m_date;                    //整數
    std::vector<int> m_remainder;               //餘數
};

#endif /* defined(__CLong_Date__CLong_Date__) */


下面是原始檔(CLong_Date.cpp):

//
//  CLong_Date.cpp
//  CLong_Date
//
//  Created by yaoshun on 13-7-23.
//  Copyright (c) 2013年 yaoshun. All rights reserved.
//

/*
 版本號:v2.1
 作者:ys
 日期:2013/8/4
 */

#include "CLong_Date.h"
#include <stdlib.h>

//public
CLong_Date::CLong_Date(std::string str)
{
    unsigned long i=0;
    if(str.substr(i,1)=="-")
    {
        i++;
        //去除前置元素0,且全為0時得保留最後一位
        while (atoi(str.substr(i,1).c_str())==0 && i<str.length()-1 )
        {
            i++;
        }
        m_date.push_back(
                         (atoi(str.substr(i,1).c_str()))
                         *(-1));
        i++;
    }
    //去除前置元素0
    else
        while (atoi(str.substr(i,1).c_str())==0 && i<str.length()-1)
        {
            i++;
        }
    for (; i<str.length() ; i++)
    {
        std::string str_temp=str.substr(i,1);
        m_date.push_back(atoi(str_temp.c_str()));
    }
    if (m_date.size()==0)
        throw "It's not a number!";
    m_remainder.push_back(0);
}
CLong_Date::~CLong_Date()
{
    m_date.clear();
}

std::ostream & operator<<(std::ostream &output,const CLong_Date &other)
{
    CLong_Date temp=other;
    std::vector<int>::iterator iter;
    for(iter=temp.m_date.begin();iter!=temp.m_date.end();iter++)
        output<<*iter;
    return output;
}
bool operator<(CLong_Date &pro, CLong_Date &behind)
{
    CLong_Date temp=pro-behind;
    if(temp.CheckSign()>=0)
        return false;
    else
        return true;
}
bool operator>(CLong_Date &pro, CLong_Date &behind)
{
    CLong_Date temp=pro-behind;
    if(temp.CheckSign()<=0)
        return false;
    else
        return true;
}
bool operator==(CLong_Date &pro, CLong_Date &behind)
{
    CLong_Date temp=pro-behind;
    if(temp.CheckSign()==0)
        return true;
    else
        return false;
}
bool operator!=(CLong_Date &pro, CLong_Date &behind)
{
    if (pro==behind)
        return false;
    else
        return true;
}
bool operator<=(CLong_Date &pro, CLong_Date &behind)
{
    if (pro>behind)
        return false;
    else
        return true;
}
bool operator>=(CLong_Date &pro, CLong_Date &behind)
{
    if (pro<behind)
        return false;
    else
        return true;
}
CLong_Date CLong_Date::operator*(const CLong_Date &other)
{
    std::vector<int> temp_other=other.m_date;
    std::vector<int> temp_self=m_date;
    bool flag=true;
    //同時為負
    if (temp_other[0]<0 && temp_self[0]<0)
    {
        temp_other[0]=temp_other[0]*(-1);
        temp_self[0]=temp_self[0]*(-1);
    }
    //後負前正
    if (temp_other[0]<0 && temp_self[0]>0)
    {
        temp_other[0]=temp_other[0]*(-1);
        flag=false;
    }
    //前負後正
    if (temp_self[0]<0 && temp_other[0]>0)
    {
        temp_self[0]=temp_self[0]*(-1);
        flag=false;
    }
    std::vector<int> result_temp=Max_Max_vector(temp_self,temp_other,false);
    std::vector<int>::iterator iter;    
    std::vector<int> result_temp2;
    
    //去除前面的0
    unsigned long count_zero=0;
    iter=result_temp.end()-1;
    while (*iter==0 && iter>result_temp.begin()) {
        iter--;
        count_zero++;
    }
    //記得要倒序
    for (iter=result_temp.end()-1-count_zero; iter>=result_temp.begin(); iter--)
    {
        result_temp2.push_back(*iter);
    }
    //標誌位
    if (!flag)
        result_temp2[0]=result_temp2[0]*(-1);
    CLong_Date result(result_temp2);
    return result;
}
CLong_Date CLong_Date::operator/(const CLong_Date &other)
{
    if (m_date[0]==0)
    {
        CLong_Date result("0");
        return result;
    }
    std::vector<int> temp_other=other.m_date;
    std::vector<int> temp_self=m_date;
    bool flag=true;
    //同時為負
    if (temp_other[0]<0 && temp_self[0]<0)
    {
        temp_other[0]=temp_other[0]*(-1);
        temp_self[0]=temp_self[0]*(-1);
    }
    //後負前正
    if (temp_other[0]<0 && temp_self[0]>0)
    {
        temp_other[0]=temp_other[0]*(-1);
        flag=false;
    }
    //前負後正
    if (temp_self[0]<0 && temp_other[0]>0)
    {
        temp_self[0]=temp_self[0]*(-1);
        flag=false;
    }
    
    CLong_Date otherS(temp_other);
    if (*this<otherS)
        throw "Can't div!";
    std::vector<int> result_temp;       //儲存商
    std::vector<int> remainder;         //儲存餘數
    for (unsigned long i=otherS.GetSize(); i<=temp_self.size(); i++)
    {
        CLong_Date temp_divider(temp_self);
        CLong_Date temp_head=temp_divider.GetSonHead(i);
        CLong_Date temp_tail=temp_divider.GetSonTail(temp_self.size()-i);
        if (temp_head<otherS)           //這裡判斷的話,可以加快速度
        {
            result_temp.push_back(0);
            continue;
        }
        else
        {
            int j=1;
            std::vector<int> v;
            //從2開始測試商
            for (j=2; j<=10; j++)
            {
                v.clear();
                v.push_back(j);
                CLong_Date Lv(v);
                CLong_Date judge=Lv*otherS;
                if ( judge > temp_head )
                {
                    v.clear();
                    v.push_back(j-1);
                    //儲存商
                    result_temp.push_back(j-1);
                    break;
                }
            }
            CLong_Date Lv(v);
            CLong_Date up=temp_head-Lv*otherS;
            //i要在此儲存數位
            i=CutZero(up.m_date).size();
            //連線沒除完的餘數
            if(temp_tail.m_date.size()==0)
            {
                remainder=up.m_date;
                break;
            }
            up.Connect(temp_tail);
            //初始化
            temp_self=CutZero(up.m_date);
            //去除0後要補0
            if(temp_self.size() < up.GetSize())
            {
                for (unsigned long k = 0; k<up.GetSize()-temp_self.size()-1; k++)
                {
                    result_temp.push_back(0);
                }
                i=0;
            }
            //儲存餘數
            remainder=temp_tail.m_date;
        }
    }
    
    //去除第前面的元素0
    std::vector<int> result_temp2=CutZero(result_temp);
    if (!flag)
        result_temp2[0]=result_temp2[0]*(-1);
    CLong_Date result(result_temp2);
    if(remainder.size()!=0 && remainder[0]!=0)
        result.m_remainder=remainder;
    return result;
}
CLong_Date CLong_Date::operator%(const CLong_Date &other)
{
    CLong_Date result=*this/other;
    return result.GetRemainder();
}
CLong_Date CLong_Date::operator+(const CLong_Date &other)
{
    std::vector<int> temp_other=other.m_date;
    std::vector<int> temp_self=m_date;
    bool flag=true;
    //同時為負
    if ( (temp_other[0]<0) && (temp_self[0]<0) )
    {
        temp_other[0]=temp_other[0]*(-1);
        temp_self[0]=temp_self[0]*(-1);
        flag=false;
    }
    //後負前正
    if ( (temp_other[0]<0) && (temp_self[0]>0) )
    {
        temp_other[0]=temp_other[0]*(-1);
        CLong_Date pro(temp_self);
        CLong_Date behind(temp_other);
        return pro-behind;
    }
    //前負後正
    if ( (temp_other[0]>0) && (temp_self[0]<0) )
    {
        temp_self[0]=temp_self[0]*(-1);
        CLong_Date pro(temp_other);
        CLong_Date behind(temp_self);
        return pro-behind;
    }
    
    std::vector< std::vector<int> > result_temp;
    //對齊數位,貌似沒必要,因為是倒序
    /*    int dif=abs(temp_other.size() - temp_self.size());
    if(temp_other.size() > temp_self.size())
    {
        for (int i=0; i<dif; i++)
        {
            std::cout<<i<<std::endl;
            temp_other.insert(temp_other.begin(),0);
        }
    }
    if (temp_other.size() < temp_self.size())
    {
        for (int i=0; i < dif; i++)
        {
            std::cout<<i<<std::endl;
            temp_self.insert(temp_self.begin(), 0);
        }
    }*/
    
    //注意補0
    temp_other.push_back(0);
    
    std::vector<int>::iterator iter;
    std::vector<int> temp;
    for(iter=temp_other.end()-1;iter>=temp_other.begin();iter--)
    {
        temp.push_back(*iter);
    }
    result_temp.push_back(temp);
    temp.clear();
    for(iter=temp_self.end()-1;iter>=temp_self.begin();iter--)
    {
        temp.push_back(*iter);
    }
    result_temp.push_back(temp);
    
    std::vector<int> result=Max_Aid_Max(result_temp);
    std::vector<int> result2;
    //記得要倒序,並且去除第一元素0
    for (iter=result.end()-1; iter>result.begin(); iter--)
    {
        result2.push_back(*iter);
    }
    //標誌位
    if (!flag)
        result2[0]=result2[0]*(-1);

    CLong_Date L_result(result2);
    return L_result;
}
CLong_Date CLong_Date::operator-(const CLong_Date &other)
{
    std::vector<int> temp_other=other.m_date;
    std::vector<int> temp_self=m_date;
    //是否新增負號
    bool flag=true;
    
    //前面為0
    if (temp_self.size()==1 && temp_self[0]==0)
    {
        temp_other[0]=temp_other[0]*(-1);
        CLong_Date behind(temp_other);
        return behind;
    }
    //同時為負
    if ( (temp_other[0]<0) && (temp_self[0]<0) )
    {
        temp_other[0]=temp_other[0]*(-1);
        temp_self[0]=temp_self[0]*(-1);
        CLong_Date pro(temp_other);
        CLong_Date behind(temp_self);
        return pro-behind;
    }
    //後負前正
    if ( (temp_other[0]<0) && (temp_self[0]>0) )
    {
        temp_other[0]=temp_other[0]*(-1);
        CLong_Date pro(temp_self);
        CLong_Date behind(temp_other);
        return pro+behind;
    }
    //前負後正
    if ( (temp_other[0]>0) && (temp_self[0]<0) )
    {
        temp_other[0]=temp_other[0]*(-1);
        CLong_Date pro(temp_other);
        CLong_Date behind(temp_self);
        return pro+behind;
    }

    
    //如果被減數比減數長就交換
    if (temp_other.size()>temp_self.size())
    {
        std::vector<int> temp=temp_self;
        temp_self=temp_other;
        temp_other=temp;
        flag=false;
    }
    //如果被減數比減數大就交換
    else if(temp_other.size()==temp_self.size())
    {
        unsigned long i=0;
        for(i=0;i<temp_self.size();i++)
        {
            if (temp_self[i]==temp_other[i])
                continue;
            if (temp_self[i]!=temp_other[i])
                break;
        }
        if (temp_self[i]<temp_other[i])
        {
            std::vector<int> temp=temp_self;
            temp_self=temp_other;
            temp_other=temp;
            flag=false;
        }
    }
    
    std::vector< std::vector<int> > result_temp;
    
    //注意補0
    temp_other.push_back(0);
    
    std::vector<int>::iterator iter;
    std::vector<int> temp;
    for(iter=temp_other.end()-1;iter>=temp_other.begin();iter--)
    {
        //注意這裡需要
        temp.push_back(0-*iter);
    }
    result_temp.push_back(temp);
    temp.clear();
    for(iter=temp_self.end()-1;iter>=temp_self.begin();iter--)
    {
        temp.push_back(*iter);
    }
    result_temp.push_back(temp);
    
    std::vector<int> result=Max_Aid_Max(result_temp);
    //減法退位處理
    int pro=0;
    for (iter=result.begin(); iter!=result.end(); iter++)
    {
        if(pro!=0)
        {
            *iter=*iter+pro;
            pro=0;
        }
        if(*iter<0)
        {
            *iter=*iter+10;
            pro--;
        }
    }
    
    std::vector<int> result2;
    //記得要倒序,並且去除第前面的元素0
    unsigned long count_zero=0;
    iter=result.end()-1;
    while (*iter==0 && iter>result.begin()+1) {
        iter--;
        count_zero++;
    }
    //並且去除第一元素0
    for (iter=result.end()-1-count_zero; iter>result.begin(); iter--)
    {
        result2.push_back(*iter);
    }
    //標誌位
    if (!flag)
        result2[0]*=-1;
    
    CLong_Date L_result(result2);
    return L_result;
}
CLong_Date CLong_Date::operator++()
{
    CLong_Date temp("1");
    return *this+=temp;
}
CLong_Date CLong_Date::operator--()
{
    CLong_Date temp("-1");
    return *this+=temp;
}
const CLong_Date CLong_Date::operator++(int)
{
    CLong_Date temp("1");
    CLong_Date result=*this;
    *this+=temp;
    return result;
}
const CLong_Date CLong_Date::operator--(int)
{
    CLong_Date temp("-1");
    CLong_Date result=*this;
    *this+=temp;
    return result;
}
CLong_Date CLong_Date::operator+=(const CLong_Date &other)
{
    return *this=*this+other;
}
CLong_Date CLong_Date::operator-=(const CLong_Date &other)
{
    return *this=*this-other;
}

int CLong_Date::CheckSign()
{
    if(m_date[0]>0)
        return 1;
    else if(m_date[0]==0)
        return 0;
    else
        return -1;
}
unsigned long CLong_Date::GetSize()
{
    return m_date.size();
}
void CLong_Date::Connect(const CLong_Date &other)
{
    std::vector<int> temp_other=other.m_date;
    if (temp_other[0]<0)
        throw "Can't connect CLong_Date that have sign!";
    std::vector<int>::iterator iter;
    for(iter=temp_other.begin();iter!=temp_other.end();iter++)
        m_date.push_back(*iter);
}
CLong_Date CLong_Date::GetSonHead(unsigned long len)
{
    if (len > m_date.size())
        throw "Can't get son from head!";
    std::vector<int> temp;
    for(unsigned long i=0;i<len;i++)
        temp.push_back(m_date[i]);
    CLong_Date result(temp);
    return result;
}
CLong_Date CLong_Date::GetSonTail(unsigned long len)
{
    if (len > m_date.size())
        throw "Can't get son from tail!";
    std::vector<int> temp;
    for(unsigned long i=0;i<len;i++)
        temp.push_back(m_date[m_date.size()+i-len]);
    CLong_Date result(temp);
    return result;
}
CLong_Date CLong_Date::GetSon(unsigned long head,unsigned long tail)
{
    std::vector<int> temp;
    for(unsigned long i=head-1;i<tail;i++)
        temp.push_back(m_date[i]);
    CLong_Date result(temp);
    return result;
}
CLong_Date CLong_Date::GetRemainder()
{
    CLong_Date result(m_remainder);
    return result;
}
bool CLong_Date::CheckPrimeNumber()
{
    CLong_Date begin("2");
    if(*this==begin)
        return true;
    CLong_Date remainder("0");
    CLong_Date end=Sqrt();
    while (begin<=end)
    {
        CLong_Date prime=(*this/begin).GetRemainder();
        if ( prime == remainder )
            return false;
        begin++;
    }
    return true;
}
CLong_Date CLong_Date::Sqrt()
{
    if (CheckSign()<0)
        throw "Can't calculate sqrt!";
    if (CheckSign()==0)
    {
        CLong_Date result("0");
        return result;
    }
    CLong_Date pro("1"),mid("2"),behind=*this;
    CLong_Date result=(pro+behind)/mid;
    CLong_Date judge("1");
    while (1)
    {
        CLong_Date result_try=result*result;
        if (result_try==*this)
            return result;
        else if(result_try<*this)
        {
            pro=(pro+behind)/mid;
            CLong_Date result_pro=result;
            result++;
            result_try=result*result;
            if (result_try>*this)
                return result_pro;
        }
        if(result_try>*this)
        {
            behind=(pro+behind)/mid;
            result--;
            result_try=result*result;
            if (result_try<*this)
                return result;
        }
        
        result=(pro+behind)/mid;
    }
}
CLong_Date CLong_Date::Abs()
{
    if (CheckSign()>=0)
        return *this;
    else
    {
        CLong_Date result=*this;
        result.m_date[0]=result.m_date[0]*(-1);
        return result;
    }
}

//protected
CLong_Date::CLong_Date(const std::vector<int> v_int)
{
    m_date=v_int;
    m_remainder.push_back(0);
}
//provite
std::vector<int> CLong_Date::Max_Aid_Max(std::vector<
                                         std::vector<int> > &result)
{
    std::vector<int> final;
    std::vector<int>::iterator iter;
    std::vector< std::vector<int> >::iterator iter_result;
    //初始化
    for(iter=(result.begin())->begin();iter != (result.begin())->end();
        iter++)
    {
        final.push_back(*iter);
    }
    //計算
    unsigned long i=1;
    //儲存進位
    int pro=0;
    for(iter_result=result.begin()+1;iter_result!=result.end();
        iter_result++,i++)
    {
        std::vector<int> temp_down=*(iter_result);
        std::vector<int>::iterator iter_td=temp_down.begin();
        
        for(iter=final.begin()+i;iter != final.end();
            iter++,iter_td++)
        {
            //std::cout<<*iter<<" "<<*iter_td<<std::endl;
            //底數不夠長,貌似不會出現
            if (iter_td==temp_down.end())
            {
                break;
            }
            int mid=(*iter+*iter_td+pro)/10;
            *iter=(*iter+*iter_td+pro)%10;
            pro=mid;
        }
        //底數長度不足,上數要走完
        while (iter!=final.end())
        {
            int mid=(*iter+pro)/10;
            *iter=(*iter+pro)%10;
            pro=mid;
            iter++;
        }
        //上數長度不足,底數要走完
        while (iter_td<temp_down.end())
        {
            int temp=(*iter_td+pro)/10;
            final.push_back((*iter_td+pro)%10);
            iter_td++;
            pro=temp;
        }
        //注意最後可能pro沒有走完,很難發現的一個Bug
        if (pro!=0)
        {
            while (pro>0)
            {
                final.push_back(pro%10);
                pro=pro/10;
            }
        }
    }
    //注意最後可能pro沒有走完
    if (pro!=0)
    {
        while (pro)
        {
            final.push_back(pro%10);
            pro=pro/10;
        }
    }
    return final;
}
std::vector<int> CLong_Date::Max_Max_vector(std::vector<int> &A,
                                            std::vector<int> &B,
                                            bool check)
{
    if(A.empty() || B.empty())
    {
        std::cerr<<"資料不能為空!"<<std::endl;
        exit(1);
    }
    std::vector< std::vector<int> > result;
    
    std::vector<int>::iterator iter_A,iter_B;
    
    int last=0;
    for(iter_B=B.end()-1;iter_B>=B.begin();iter_B--)
    {
        std::vector<int> result_temp;
        
        for(iter_A=A.end()-1;iter_A>=A.begin();iter_A--)
        {
            int temp=(*iter_A)*(*iter_B)+last;
            int result_temp_int=temp%10;
            last=temp/10;
            result_temp.push_back(result_temp_int);
            
        }
        
        while(last)
        {
            result_temp.push_back(last%10);
            last=last/10;
        }
        result.push_back(result_temp);
    }
    
    //測試
    if(check)
    {
        std::cout<<std::endl<<"校驗"<<std::endl;
        std::vector< std::vector<int> >::iterator iter_result;
        for(iter_result=result.begin();iter_result!=result.end();
            iter_result++)
        {
            std::vector<int>::iterator iter;
            for(iter=iter_result->begin();iter != iter_result->end();
                iter++)
            {std::cout<<*iter;}
            std::cout<<std::endl;
        }
        std::cout<<"校驗完畢"<<std::endl;
    }
    
    std::vector<int> final=Max_Aid_Max(result);
    
    return final;
}
std::vector<int> CLong_Date::CutZero(std::vector<int> vet)
{
    unsigned long count_zero=0;
    std::vector<int> result;
    std::vector<int>::iterator iter=vet.begin();
    while (*iter==0 && iter<vet.end()) {
        iter++;
        count_zero++;
    }
    for (iter=vet.begin()+count_zero;iter!=vet.end();iter++)
    {
        result.push_back(*iter);
    }
    return result;
}

測試檔案(main.cpp):

#include <iostream>
#include <fstream>
#include "CLong_Date.h"
using namespace std;

int main(int argc, const char * argv[])
{
    string str1("6653340"),str2("1100240"),str3("20");

    //計時
	clock_t timeBegin, timeEnd;
    timeBegin = clock();

/*    CLong_Date A(str1),B(str2),C(str3);
    cout<<A<<endl;
    cout<<B<<" "<<C<<endl;
    cout<<B/C<<endl;
    cout<<(B*C)/C<<endl;*/

    cout<<"prime number:"<<endl;
    CLong_Date prime("100000");
    CLong_Date   end("110000");
    cout<<"begin:"<<prime<<endl
        <<"  end:"<<end<<endl;
    if(prime.CheckPrimeNumber())
        cout<<prime<<endl;
    ofstream fout("prime.txt");
    while (prime<end)
    {
        if(prime.CheckPrimeNumber())
        {
            cout<<prime<<endl;
            fout<<prime<<endl;
        }
        prime++;
    }
    fout.close();

//    cout<<(B/C).GetRemainder()<<endl;
//    cout<<B.GetSon(1,3)<<endl<<endl;
/*    cout<<(A-A)<<endl;
    cout<<(A-A)+B<<endl;
    cout<<(B-A)+(B)<<endl;
    cout<<(B-A)-A<<endl;


    cout<<(A*C)<<endl;
    A.Connect(B);*/
/*    A+=B;
    cout<<A<<endl;
    cout<<A.GetSize()<<endl;

    if(A<B)
        cout<<"A小於B"<<endl;
    if(A>B)
        cout<<"A大於B"<<endl;
    if(B<A)
        cout<<"B小於A"<<endl;
    if(B>A)
        cout<<"B大於A"<<endl;

    CLong_Date google_pro("39999999999999999"),google_behind("39999999999999998");
    cout<<google_pro-google_behind<<endl;

    cout<<"2的次方:"<<endl;
    CLong_Date index("1"),index_2("2");
    for (int i=0; i<256; i++)
    {
        index=index_2*index;
    }
    cout<<index<<endl<<endl;*/

    timeEnd = clock();
	cout<<"Cost time is:"<<(double)(timeEnd-timeBegin)/ CLOCKS_PER_SEC<<"秒"<<endl;
    return 0;


    return 0;
}


本次是我第一次寫部落格,如有問題請多包涵,若發現bug請給予修正,不慎感激。

相關文章