网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.XP安装IIS及Framework后无法访问.
.如何在页面之间传递数据量较大的.
..NET在SQL Server中的图片存取技.
.ASP.NET 2.0: 页面中链入的CSS、.
.ASP.net 2.0下应用程序离线信息.
.第一次用.net2.0 LOGIN登陆控件的.
.如何在上传的图片上写字.
..net回收机制的使用.
.asp.net 2.0里动态访问meta标记.
.关闭按钮点击事件的捕捉 .
.ASP.NET 2.0中使用自定义provider .
.ASP.NET操作IIS中的虚拟目录.
.封装的一些实现图片水印与图片自.
.ASP.NET2.0下利用javascript实现.
.动态改变asp.net网页的标题.
.调试ASP.NET应用程序的方法和技巧.
.web中,如何读取Word内容(包含表.
..net内存回收与Dispose﹐Close﹐.
.ASP.NET动态加载控件的"追赶论".
.GridView控件自定义分页详解.

.net中大数处理的一些算法思想

发表日期:2006-2-20


    在 .NET 开发中,有时会因为处理一些边缘学科的知识内容,如统计,金融,天文等计算,是加密解密算法
都会涉及到大数的运算,就是.net中最大数值类型储存了都会溢出的数,我的一个想法是计算时用数值类型,储
存(暂时)和输出时是字符串 那么储存时就需要BOX[n] n个数组来暂时储存一个计算中的小步骤结果,
'如一下例子
====================算法理解图=======================                       
'97*97*97*97*97                     = 8587340257                     box(1) = 587340257   box(2)=8
 '97*97*97*97*97*97               = 832972004929                box(1) = 972004929   box(2)=832
'97*97*97*97*97*97*97         = 80798284478113             box(1) = 284478113   box(2)=80798
 '97*97*97*97*97*97*97*97  = 7837433594376961         box(1) = 594376961   box(2)=7837433  
'97^ 9                                   = 760231058654565217     box(1) = 654565217   box(2)=760231058
 '97^ 10                         = 73742412689492826049   box(1) = 492826049   box(2)=742412689  box(3)=73
     ……                                                  ……                                       ……                     …… 
注意box 下表越大对应的数越高位在,在运用上面的算法时要记住
①先定义一个BOX的标志为几位,如上面是9位(根据需要和实际情况),
②由于计算习惯,很多人会从底位算起时{box(0 -> n)} 要先算box(n+1)位的数,在把box(n) 产生的进位数(如第一条计算box(1)向box(2)=0产生进位数8 box(2)+进位数 = 8 )进行处理,如以上时加法处理
③ 最好从高位算起,你将省去很多麻烦,box个数未知,没关系,用动态数组,满了时(最高下标box产生的进位数)再添一个
还有取模运算时,如果模数不大,也可以采用以上思想分段求模,再链接box得暂时结果,重新分配box(一定要从高位起重新截断)如被模数123456789123456789  设八位一个box   box(1)=89 box(2)=91234567 box(3)=12345678各box分别取模再联合(传统是123456789123456789 ÷  333=370741108478849 模是72)  那么重新分配的盒子应该是box(1) =478849 box(2) =370741180 而不能是box(1) =370741180  box(2) = 478849  为什么? ∵从高位开始取模,box(n) 在被取模一次后如果不变,再次取模结果没变是box(n) = box(n)  程序将进入死循环
     另外一种涉及大数运算的情况式是 对A的n 次方后取模 (A ^n mod  V ) 如果mod数不大可以(是n个A后结束)((A mod V)* A mod V) * A mod V …… 此算法不一定要用递归实现,简单的循环即可,最多两层嵌套循环
    最后忠告 :对一个大数进行加减乘除时千万别轻易的进行对被(加/减/乘/除)数因式分解,这种算法效率会很底
    (文章编写匆忙,可能存在错字,敬请原谅)

出处:same BLOG

上一篇:asp.net应用程序级别跟踪 人气:6683
下一篇:部署安装时写入SQL SERVER和Web.config 人气:7431
浏览全部.net的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐