没有合适的资源?快使用搜索试试~ 我知道了~
首页大数四则运算的C++实现.doc
大数四则运算的C++实现.doc
4星 · 超过85%的资源 需积分: 23 16 下载量 143 浏览量
更新于2023-03-03
评论 3
收藏 136KB DOC 举报
大数四则运算的C++实现,大数四则运算包括加减乘除的运算,使用链表实现。
资源详情
资源评论
资源推荐
中国科学技术大学
继续教育学院课程设计
论文报告
论文题目:
大数四则运算的 C++实
现
学员姓名: 王欢
学%%%%号:
TB04039103
专%%%%业: 计算机科学与技术
指导教师:
日%%%%期: 2007 年 1 月 10 日
大数四则运算的 C++实现
[摘要]大数运算不仅仅运用在密码学中,还运用在一些物理学研究、生物学,化学等科目中。
大数运算,意味着参加的值和计算结果通常是以上百位数,上千位数以及更大长度之间的整数
运算。例如大家所熟知圆周率 的值,在一般的数值计算中用到圆周率的不须要多大的精度,
但在计算一些星球或是星系上的体积面积时便显的误差很大了,这就要求 值计算的精度达到
几百万位甚至更高,才能缩小误差。人工计算是远远不行了,而且本身误差也无法估计。只有
在计算机中用大数运算求 值了。又如,考古学家计算石头内的碳元素衰变来考证地球形成的
时间,更是将计算的结果精确到了百年以内。所以说大数的运算是涉及领域多,应用范广,与
我们生活息息关。在此,我采用一个在 语言下实现计算大数运算的一个程序为例,讲解包括
了大数的加法,减法,乘法和除法及求幂运算的算法及代码。
[关键词]大数计算%网络安全%密码学
随着计算机网络技术的发展和因特网的广泛普及,网络安全事故逐年增加,黑客的攻击已经
和病毒并列成为对信息安全影响最严重的两大危害。其很大程度上是被黑客破解了用户的计算
机名及登陆密码及资料的加密较差,而使得黑客来对网民的资料如同自己般的随意更改和破坏。
而安全的密码和账号成为了网民的安全之本,怎么才能提高安全问题成为的人们和社会关注的
问题。而加密大部又是以大素数的计算为基础的,如非对称密码体制 的安全性依赖于对大
数进行因数分解的耗时性。一个二进制数 的因数分解所需的机器周期大约是
。若机器周期为 , 为二进制数的位数,分解%所需时间
如下表所示:
位数
时间
秒
天
年
兆
年
年
年
实际应用中,、! 的选择都在 数字以上,这样每个明文块的二进制位数可达 "
比特,即 # 个字节。而 $% 只有 # 个字符。一般认为,对于当前的计算机水平,选择 "
位长的密钥就可认为是无法攻破的了。
1. 数字存储的实现
大数计算的因数和结果精度一般是少则数十位,多则几万位。在 语言中定义的类型中精度
最多只有二十多位,因而我们采取用链表存贮的方式来存放大数。在计算中会用到从高位开始
计算,和从低位开始计算数值的两种情况。所以我们将链表定义为双向链表,其中为一个单元
来存贮数据,一个指针指向前方的数据,另一个指向后的数据。其结构为:
&'()&*+,定义一个双向链表用来存贮结果
)-.',.&./数据定义为字符的原因:要显示负号
*+,&/尾指针
*+,.-.,/首指针
/
2. 各种算法
0加法运算的实现
加法计算还是比较容易的,我们也是先从低位算起,因为只须要对应的位相加,再加上前一
位的进位,再去判断是否本位是否有进位,%有则把本位数字改为减去它的权,也就是 ,再
置进位为 。如果没有进位,则给进位赋值 。
在程序时应注意:
1、两个加数中那一个数的位数长,以位数长的作为循环变量;
2、结束循环时,不仅仅是最后一位加完就停止,还应加入如果有进位,也要再循环一次。
如最后一位是 9,进位是 1,则相加时进位,要加上进位这一位值。具体看代码,输入输出
时和乘法的一样。
11111111111111111111111111111111111111111111111111111111111111111111111111
函数名称:%大数加法
函数过程:比较两个数那一个长
以长的作为循环次数
对应项相加%进位存贮直到下高位相加用
"直到循环结束
222222没设计负数相加
入口参数:(3.,(3,'(& 字符串
出口参数:无
编辑环境:45678777
11111111111111111111111111111111111111111111111111111111111111111111111111
9+5,.,,5&5+)-.'(3.:)-.'(3:)-.''(&计算两大数之和
)-.'.;,,(3./指向 (3. 的一个指针。+5&(3..指向乘数的最
低位,
)-.';,,(3/指向 (3 的一个指针%指向被乘数的最低位,
5&.+<5&&'(3./标记数字 . 的长度;
5&+<5&&'(3/标记数字 的长度;
5&&53/标致要计算多少次。
5&).''=:&3>'(&/存贮进位%和临时结果的
*+,-.,:用于存贮头指针
&.'&:用于存贮计算时的首指针
4/作于申请新结点%
-.,&.'&4*+,/初始化首结点和头结点。
&.'&1?,.&./
&.'&1?&*@AA/
&.'&1?.-.,*@AA/
5B.5<'(3.:(3?
&535&&'(3./比较两个字符串长度,以大的作为循环次数
&535&&'(3/
.;,,(3/交换指针
;,,(3./
.+<5&&'(3/标记数字 . 的长度;
+<5&&'(3./标记数字 的长度;
4-5&5311CC&53?DD).''=2
5B2&.'&1?&如果当前为空结点,则申请新结点
44*+,/
41?,.&./
41?&*@AA/
41?.-.,&.'&/
&.'&1?&4/
&3>'(&&.'&1?,.&.7.1"#71"#7).''=/自身的值7新
值7进位%作为当前的新值
&.'&1?,.&.&3>'(&E/存贮个位
).''=&3>'(&/存贮进位
&.'&&.'&1?&/结点移动
+<11/
5B+<?11/指针移向被加数高位
"#/之后相减就变为了 不作任何运算;
.11/加数指针移动,
&.'&-.,/寻找链表的结尾点
剩余20页未读,继续阅读
acer1656
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1