|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有专家说:java不是跨平台,java就是平台,这很好的定义了java的特点。有了java,你只需要等待java平台在新平台上移植。这还不错吧!只是,java不是一个平台,而是多个平台。你需要在这个java平台移植到另一个java平台。算法在.NET开辟中,偶然会由于处置一些边沿学科的常识内容,如统计,金融,地理等盘算,是加密解密算法城市触及到年夜数的运算,就是.net中最年夜数值范例贮存了城市溢出的数,我的一个设法是盘算时用数值范例,贮存(临时)和输入时是字符串那末贮存时就必要BOX[n]n个数组来临时贮存一个盘算中的小步骤了局,
如一下例子
====================算法了解图=======================
97*97*97*97*97=8587340257box(1)=587340257box(2)=8
97*97*97*97*97*97=832972004929box(1)=972004929box(2)=832
97*97*97*97*97*97*97=80798284478113box(1)=284478113box(2)=80798
97*97*97*97*97*97*97*97=7837433594376961box(1)=594376961box(2)=7837433
97^9=760231058654565217box(1)=654565217box(2)=760231058
97^10=73742412689492826049box(1)=492826049box(2)=742412689box(3)=73
……………………
注重box下表越年夜对应的数越高位在,在使用下面的算法时要记着
①先界说一个BOX的标记为几位,如下面是9位(依据必要和实践情形),
②因为盘算习气,良多人会从底位算起时{box(0->n)}要先算box(n+1)位的数,在把box(n)发生的进位数(如第一条盘算box(1)向box(2)=0发生进位数8box(2)+进位数=8)举行处置,如以上时加法处置
③最好从高位算起,你将省往良多贫苦,box个数未知,不妨,用静态数组,满了时(最高低标box发生的进位数)再添一个另有取模运算时,假如模数不年夜,也能够接纳以上头脑分段求模,再链接box得临时了局,从头分派box(必定要从高位起从头截断)如被模数123456789123456789设八位一个boxbox(1)=89box(2)=91234567box(3)=12345678各box分离取模再团结(传统是123456789123456789÷333=370741108478849模是72)那末从头分派的盒子应当是box(1)=478849box(2)=370741180而不克不及是box(1)=370741180box(2)=478849为何?∵从高位入手下手取模,box(n)在被取模一次后假如稳定,再次取模了局没变是box(n)=box(n)程序将进进逝世轮回
别的一种触及年夜数运算的情形式是对A的n次方后取模(A^nmodV)假如mod数不年夜能够(是n个A后停止)((AmodV)*AmodV)*AmodV……此算法纷歧定要用递回完成,复杂的轮回便可,最多两层嵌套轮回
最初忠言:对一个年夜数举行加减乘除时万万别容易的举行对被(加/减/乘/除)数因式分化,这类算法效力会很底
(文章编写匆仓促,大概存在错字,敬请包涵)
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。 |
|