亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? slnum.cpp

?? 素數(shù)生成算法
?? CPP
字號:
// slnum.cpp: implementation of the slnum class.
//定義一個超高精度的類slnum的實現(xiàn)算法代碼,用以實現(xiàn)超過20位有效數(shù)字整型數(shù)值
//的運算,并具有兼容已有整型數(shù)據(jù)int的能力,能與int數(shù)據(jù)混合運算。
//版權(quán)所有,貴州師范大學(xué)數(shù)學(xué)與計算機科學(xué)系2001成計本班羅國文(貴州天柱二中)
//凡引用本文件不得刪除上述信息
//////////////////////////////////////////////////////////////////////
#include<string.h>
#include "slnum.h"
#include <stdlib.h>
#include <math.h>

#define z1  "0"
#define z2  "00"
#define z3  "000"
#define z4  "0000"
#define R    10000


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//空初始化
slnum::slnum()
{
	sign=1;
	arr_n=1;
	sl=new long[arr_n];
	sl[0] =0;
	soure=new char[8];
	soure="0";

}
//把數(shù)值字符串設(shè)置值給slnum類對象
void slnum::setval(const char * s)
{
	char mySIGN;
        char temp[5];
	int len,i,j=4,k=0;
	mySIGN=s[0];
	switch(mySIGN)
	{
	case '-':
	case '+':
		{
			if(mySIGN=='-')sign=-1;
			if(mySIGN=='+')sign=+1;
			len=strlen(s);
			soure=new char[len+1];
			strcpy(soure,s);
			for(int n=0;n<=len;n++)soure[n]=soure[n+1];
			len=strlen(soure);
			if (len%4==0) arr_n=(int)len/4;
			else arr_n=(int)(len/4+1);
			sl=new long[arr_n];
			for(i=len;i>=0;i--)							//把數(shù)值串賦值給數(shù)組
			{
				temp[j]=soure[i];
				if(i==0&&j)
					for(int q=0;q<j;q++)temp[q]='0';
				if(j==0||i==0)
				{
					temp[4]='\0';
					sl[k]=atol(temp);
					j=4;k++;
				}
                                j--;
			} 
			break;
		}
	default:
		{	
			sign=+1;
			len=strlen(s);
			soure=new char[len+1];
			strcpy(soure,s);
			if (len%4==0) arr_n=(int)len/4;
			else arr_n=(int)(len/4+1);
			sl=new long[arr_n];
			for(i=len;i>=0;i--)							//把數(shù)值串賦值給數(shù)組
			{	
				temp[j]=soure[i];
				if(i==0&&j)
					for(int q=0;q<j;q++)temp[q]='0';
				if(j==0||i==0)
				{
					temp[4]='\0';
					sl[k]=atol(temp);
					j=4;k++;
				}
                                j--;
			}
			break;
		}
	}
}
//獲取值,以字符串方式取出
char *  slnum::getval ()
{
	char * temp,*e="-";
	if(sign==-1)
	{
		temp=new char[strlen(soure)+2];
		strcpy(temp,e);
		strcat(temp,soure);
	}
	else	
	{
		temp=new char[strlen(soure)+1];
		strcpy(temp,soure);
	}
	return temp;
}
//以數(shù)值字符串進行初始化
slnum::slnum(const char * s)
{
	setval(s);
}

//大于比較:真值為ture;假值為flase
bool slnum::operator >(const slnum &num)
{
	if(sign >num.sign ) return true;
	if (sign==1&&num.sign==1)
	{
		if (strlen(soure) >strlen(num.soure) ) return true;
		if ((strlen(soure) ==strlen(num.soure))&&(strcmp(soure ,num.soure )>0)) return true;
	}
	if (sign==-1&&num.sign==-1)
	{
		if (strlen(soure) <strlen(num.soure) ) return true;
		if ((strlen(soure) ==strlen(num.soure))&&(strcmp(soure ,num.soure )<0)) return true;
	}
	return false;
}
//等于比較:真值為ture;假值為flase
bool slnum::operator ==(const slnum &num)
{
	if ((sign==num.sign)&&(strcmp(soure ,num.soure )==0)) return true;
	else return false;
}
//不等于比較:真值為ture;假值為flase
bool slnum::operator !=(const slnum &num)
{
	if ((sign!=num.sign)||(strcmp(soure ,num.soure )!=0)) return true;
	else return false;
}
//大于等于比較:真值為ture;假值為flase
bool slnum::operator >=(const slnum &num)
{
	if(*this>num||*this==num)return true;
	else return false;
}
//小于比較:真值為ture;假值為flase
bool slnum::operator <(const slnum &num)
{
	if(!(*this>=num))return true;
	else return false;
}
//小于等于比較:真值為ture;假值為flase
bool slnum::operator <=(const slnum &num)
{
	if(!(*this>num)) return true;
	else return false;
}


//進位、借位調(diào)整器
void regulator(slnum *num)		
{
   int i;
   for(i=0;i<num->arr_n ;i++)
   {
	   if(num->sl[i]>=R)				   //進位調(diào)整
	   {
		   num->sl[i+1]+=num->sl[i]/R;
		   num->sl[i]%=R;
	   }
	   if(num->sl[i]<0)				   //借位調(diào)整
	   {
		   num->sl[i+1]=num->sl[i+1]-1;
		   num->sl[i]+=R;
	   }
   }
}


void  regulator_sign(slnum *num) //符號調(diào)整
{
	int flag=1,i;
	if(num->sl[num->arr_n-1]<0)flag=-1;
	num->sign=flag*num->sign;
	for(i=0;i<num->arr_n ;i++)num->sl[i]=flag*num->sl[i];
}


//整理數(shù)組值到串soure
void sltostr(slnum *num)				
{
	int i;
	char * n_temp,*c_temp;
	n_temp=new char[5];
	c_temp=new char[5];
	num->soure =new char[num->arr_n *4+4];
	num->soure[0]='\0';
	i=num->arr_n-1;
	if(num->sl[i])				//處理高高位
	{
		ltoa(num->sl[i],n_temp,10)  ;
		strcpy(num->soure ,n_temp);
	}
	int l=0;
	while(i)				//處理高位后的各位數(shù)
	{
		i--;
		ltoa(num->sl[i],n_temp,10);
		l=4-strlen(n_temp);
		if(l>0)
		{
			if(l==1)strcpy(c_temp,z1);
			if(l==2)strcpy(c_temp,z2);
			if(l==3)strcpy(c_temp,z3);
			if(l==4)strcpy(c_temp,z4);
			strcat(num->soure,c_temp);
		}
		strcat(num->soure,n_temp);
	}
	int len;
        while(num->soure[0]=='0')//去除無效0的處理
        {
	len=strlen(num->soure );
	for(i=0;i<len; i++)
		num->soure [i]=num->soure [i+1];
        }
  	if(num->soure[0]=='\0')strcpy(num->soure,"0");
}
//與常規(guī)整數(shù)的加運算
slnum	slnum::operator +(int num)				
{
	char * s;
	s=new char[strlen(getval())+1];
	strcpy(s,getval());
	slnum temp(s);
	char * ss;
	ss=new char[31];
	itoa(num,ss,10);
	slnum AA(ss);
	slnum temp0;
	temp0=temp+AA;
	return temp0;
}
//與常規(guī)整數(shù)的減運算
slnum	slnum::operator -(int num)				
{
	char * s;									
	s=new char[strlen(getval())+1];
	strcpy(s,getval());
	slnum temp(s);								//取左操作數(shù)
	char * ss;
	ss=new char[31];
	itoa(num,ss,10);
	slnum A(ss);								//取右操作數(shù)
	slnum temp0;
	temp0=temp-A;
	return temp0;
}
//加運算
slnum slnum::operator +(const slnum &num)     
{
	int i;
	slnum temp;
	temp.arr_n =arr_n>num.arr_n ?arr_n:num.arr_n ;
	if((arr_n==num.arr_n )&&abs((sl[arr_n-1]*sign+num.sl[num.arr_n-1 ]*num.sign ))>=R) ++temp.arr_n ;
	temp.sl=new long[temp.arr_n ];
	for(i=0;i<temp.arr_n ;i++)temp.sl[i]=0;
	for(i=0;i<temp.arr_n ;i++)
	{
		if((i>=arr_n)&&(num.arr_n>arr_n ))temp.sl[i]=num.sl[i]*num.sign ;
		if((i>=num.arr_n )&&(arr_n >num.arr_n))temp.sl[i]=sl[i]*sign;
	        if((i<arr_n)&&(i< num.arr_n ))temp.sl[i]=sl[i]*sign+num.sl[i]*num.sign ;
        }
        regulator_sign(&temp);
	regulator(&temp);
	sltostr(&temp);
	return temp;
}
//求相反數(shù)
slnum slnum:: operator -()						
{
	char * s;
	s=new char[strlen(getval())+1];
	strcpy(s,getval());
	slnum temp(s);
	temp.sign *=-1;
	return temp;
}
//減運算
slnum slnum::operator -(const slnum &num)		
{
	slnum temp,A;
        A=num ;
        A.sign  *=-1 ;
	temp=*this+A;
	return temp;
}
//與常規(guī)整數(shù)的乘運算
slnum slnum::operator *(int num)				
{
	int i,j;
	char * ss;
	ss=new char [31];
	itoa(num ,ss,10);
	slnum temp,a(ss);
	temp.arr_n =arr_n+a.arr_n ;
	temp.sign =sign*a.sign ;
	temp.sl=new long[temp.arr_n ];
	for(i=0;i<temp.arr_n ;i++)temp.sl[i]=0;
    for(i=0;i<arr_n;i++)
	{
		for(j=0;j<a.arr_n ;j++)
		{
			temp.sl[i+j]+=sl[i]*a.sl[j];
		}
		regulator(&temp);
	}
	sltostr(&temp);
	return temp;
}
//乘運算
slnum slnum::operator *(const slnum &num)		
{
	int i,j;
	slnum temp;
	temp.sign =sign*num.sign ;
	temp.arr_n =arr_n+num.arr_n ;
	temp.sl=new long[temp.arr_n ];
	for(i=0;i<temp.arr_n ;i++)temp.sl[i]=0;
        for(i=0;i<arr_n;i++)
	{
		for(j=0;j<num.arr_n ;j++)
		{
			temp.sl[i+j]+=sl[i]*num.sl[j];
		}
		regulator(&temp);
	}
	sltostr(&temp);
	return temp;
}

//用常規(guī)整數(shù)進行賦值
void slnum::operator =(const int num)				
{
	char * ss;
	ss=new char[31];
	itoa(num,ss,10);
	setval(ss);
}
//用常規(guī)整數(shù)串進行賦值
void slnum::operator =(char * num)				
{
	setval(num);
}

slnum abs(const slnum &num)	//求絕對值
{
	slnum temp;
	temp=num;
	temp.sign*=num.sign;
	return temp;
}
//除運算:使用折半試商算法
slnum slnum::operator /(const slnum &num)
{
	int i,en,quot,A,T;
	slnum qt("0"),temp,num0;
        num0=abs(num);
	slnum sureplus("0");
	en=arr_n -num.arr_n ;
  	if(arr_n<num.arr_n )
		return qt;
        else {
		for( i=arr_n -1;i>en;i--)
		{
			sureplus=sureplus*R+sl[i];
		}
                ;
		do
		{
                        //取下一位
                        sureplus=sureplus*R+sl[i];
                        quot=0;A=0;
                        while(sureplus.sign<0||sureplus>=num0 )
			{
                         switch (sureplus.sign )
                         {
                         case 1 :
                         {
                         if (sureplus.arr_n >num0.arr_n )
                                quot=(sureplus.sl[sureplus.arr_n -1]*R+sureplus.sl[sureplus.arr_n -2])/num.sl[num.arr_n -1];
                         else   quot=sureplus.sl[sureplus.arr_n -1]/num.sl[num.arr_n -1];
                         } break;
                         case -1:
                         {
                         if (sureplus.arr_n <num0.arr_n )quot=2;
                            else if  (sureplus.arr_n >num0.arr_n )
                                        quot=(sureplus.sl[sureplus.arr_n -1]*R+sureplus.sl[sureplus.arr_n -2])/num.sl[num.arr_n -1];
                                 else   quot=sureplus.sl[sureplus.arr_n -1]/num.sl[num.arr_n -1];
                         } break;
                         }
			 T=(quot+1)/2;
                         T=T*sureplus.sign ;
                         temp=T;
                         temp=temp*num0;
                         A=A+T  ;
                         sureplus=sureplus-temp;
                        }
		qt=qt*R;
		qt=qt+A;
                --i;
		}
		while(i>=0);
		qt.sign=sign*num.sign ;
                return qt;
        }
}


//與整數(shù)的除運算
slnum slnum::operator /( int num)
{
	char * s;
	s=new char[strlen(getval())+1];
	strcpy(s,getval());
	slnum temp(s);
	slnum qt,a;
	a=num;
	qt=temp/a;
	return qt;

}

//求余運算
slnum slnum::operator %(const slnum &num)
{
	slnum temp,sp;
	sp=*this/num;
        temp=sp*num;
	temp=*this-temp;
	return temp;
}

//與常規(guī)整數(shù)的求余運算
slnum slnum::operator %(int num)
{
	char * s,*sp;
	s=new char[strlen(getval())+1];
	strcpy(s,getval());
	slnum temp(s);
	slnum surepl,a;
	a=num;
	surepl=temp%a;
	return surepl;
}

slnum::~slnum()
{

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人爽人人爽蜜臀| 久久精品无码一区二区三区| 日韩精品专区在线| 国产精品国产馆在线真实露脸| 偷窥少妇高潮呻吟av久久免费| 国产69精品久久久久777| 欧美高清激情brazzers| 中文字幕欧美区| 久久99精品久久久久久| 一本一道波多野结衣一区二区| 日韩一级成人av| 亚洲六月丁香色婷婷综合久久| 九九久久精品视频| 337p亚洲精品色噜噜噜| 亚洲精选视频免费看| 国产激情91久久精品导航| 日韩精品一区二区三区中文不卡| 一区二区三区精品| 99视频精品免费视频| 国产欧美精品一区二区三区四区| 五月激情丁香一区二区三区| 色综合久久久久综合体| 国产精品久久久久9999吃药| 国产精品自拍一区| 精品对白一区国产伦| 免费三级欧美电影| 欧美猛男男办公室激情| 亚洲第一在线综合网站| 欧美午夜寂寞影院| 亚洲一区二区在线免费看| 色狠狠色噜噜噜综合网| 亚洲婷婷综合色高清在线| 成人黄色av网站在线| 中文乱码免费一区二区 | 久久嫩草精品久久久精品一| 偷拍日韩校园综合在线| 91精品国产综合久久国产大片| 午夜欧美在线一二页| 欧美猛男男办公室激情| 蜜乳av一区二区| 欧美成人精品3d动漫h| 久草中文综合在线| 欧美国产在线观看| 91在线观看污| 亚洲国产裸拍裸体视频在线观看乱了| 欧洲一区在线观看| 日日嗨av一区二区三区四区| 欧美大片在线观看| 国产成人免费在线观看不卡| 国产精品理伦片| 91久久精品网| 日本美女一区二区三区| 久久天堂av综合合色蜜桃网| 成人午夜看片网址| 亚洲精品五月天| 91精品在线观看入口| 黑人精品欧美一区二区蜜桃| 欧美国产精品一区二区三区| 91免费版在线| 另类小说一区二区三区| 国产精品色眯眯| 欧美美女喷水视频| 国产综合色在线视频区| 自拍偷拍亚洲欧美日韩| 欧美一级专区免费大片| 丁香一区二区三区| 午夜精品一区二区三区免费视频| 欧美电影精品一区二区| 91网站最新地址| 免费视频一区二区| 亚洲欧美日韩国产中文在线| 欧美电影免费提供在线观看| 国产精品免费人成网站| 欧美亚洲日本一区| 国产精品美女久久久久久| 欧美午夜精品电影| 国产呦精品一区二区三区网站| 18欧美亚洲精品| 欧美mv日韩mv亚洲| 欧美在线观看禁18| 成人毛片视频在线观看| 美洲天堂一区二卡三卡四卡视频 | 色老汉一区二区三区| 精品亚洲国产成人av制服丝袜| 亚洲精品日日夜夜| 久久久国产精华| 666欧美在线视频| 99国产精品久久久久| 韩国女主播成人在线| 午夜激情一区二区| 亚洲精品ww久久久久久p站| 欧美精品一区二区三区在线 | 亚洲v中文字幕| 国产精品国产自产拍高清av| 精品国产一区二区三区久久影院 | 久久久久久久电影| 欧美一卡2卡三卡4卡5免费| 在线观看亚洲一区| 91免费观看视频在线| www.亚洲色图| 国产+成+人+亚洲欧洲自线| 极品尤物av久久免费看| 青草国产精品久久久久久| 一区二区激情视频| 亚洲特级片在线| 国产精品久线观看视频| 久久精品视频网| 久久只精品国产| 欧美mv日韩mv| 日韩一区二区三区三四区视频在线观看 | 26uuu亚洲综合色欧美| 欧美丰满嫩嫩电影| 欧美人动与zoxxxx乱| 欧美三级日韩三级| 91福利国产成人精品照片| 97精品久久久午夜一区二区三区| 粗大黑人巨茎大战欧美成人| 粉嫩一区二区三区在线看| 国产99一区视频免费| 国产·精品毛片| 91原创在线视频| 91欧美一区二区| 色狠狠一区二区| 黄一区二区三区| 成人精品在线视频观看| 91免费在线视频观看| 一本久久a久久免费精品不卡| 色狠狠一区二区| 欧美日本视频在线| 日韩一级黄色大片| 久久免费国产精品| 亚洲欧美在线aaa| 亚洲三级小视频| 欧美亚洲免费在线一区| 久久色.com| 日韩精品高清不卡| 日本aⅴ免费视频一区二区三区| 懂色av一区二区在线播放| 成人高清视频在线观看| 波多野结衣视频一区| 不卡电影免费在线播放一区| 91玉足脚交白嫩脚丫在线播放| 欧美在线观看视频一区二区三区| 精品1区2区3区| 精品国产一区二区三区久久影院| 久久久精品天堂| 亚洲综合偷拍欧美一区色| 日本美女一区二区| 成人免费黄色大片| 欧美麻豆精品久久久久久| 久久九九99视频| 亚洲图片自拍偷拍| 国产精品自拍网站| 欧美日韩国产另类不卡| 国产欧美日韩另类视频免费观看| 亚洲免费视频中文字幕| 免费在线看成人av| 91免费版在线| 精品99一区二区三区| 一区二区视频免费在线观看| 美女在线视频一区| 在线观看www91| 国产无遮挡一区二区三区毛片日本| 亚洲一区在线观看免费| 国产99久久久国产精品免费看| 欧美日韩三级在线| 亚洲色大成网站www久久九九| 美女www一区二区| 色丁香久综合在线久综合在线观看| 日韩午夜在线影院| 一区二区久久久| 波多野结衣91| 久久久久久一二三区| 视频一区视频二区中文| 91同城在线观看| 国产日本欧美一区二区| 青青国产91久久久久久| 在线观看日产精品| 国产精品乱码妇女bbbb| 久久99久久精品欧美| 欧美群妇大交群的观看方式| 亚洲靠逼com| voyeur盗摄精品| 国产精品污网站| 国产精品亚洲а∨天堂免在线| 91精品在线免费| 视频一区中文字幕国产| 欧美视频在线播放| 玉足女爽爽91| 91欧美一区二区| 中文字幕亚洲一区二区av在线| 国产毛片精品国产一区二区三区| 4438成人网| 日韩成人免费看| 日韩一级免费一区| 蜜桃传媒麻豆第一区在线观看| 69久久夜色精品国产69蝌蚪网| 亚洲一区二区三区四区五区中文| 成人高清免费观看| 欧美国产成人精品|