C#程序设计-多位水仙花数计算

上传人:hs****ma 文档编号:474272723 上传时间:2023-09-09 格式:DOC 页数:18 大小:482.01KB
返回 下载 相关 举报
C#程序设计-多位水仙花数计算_第1页
第1页 / 共18页
C#程序设计-多位水仙花数计算_第2页
第2页 / 共18页
C#程序设计-多位水仙花数计算_第3页
第3页 / 共18页
C#程序设计-多位水仙花数计算_第4页
第4页 / 共18页
C#程序设计-多位水仙花数计算_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C#程序设计-多位水仙花数计算》由会员分享,可在线阅读,更多相关《C#程序设计-多位水仙花数计算(18页珍藏版)》请在金锄头文库上搜索。

1、C#程序设计课程设计题 目: 多位水仙花数的计算机实现专 业: 计算机科学与技术 学 号: 姓 名: 指导老师: 完成日期: 2012-04-13 目 录1 前言12 课题介绍12.1功能要求12.2主要任务12.3运行环境12.4开发语言23 概要设计与详细设计23.1系统流程图23.2详细设计24 关键代码与特色功能的实现34.1关键代码34.2特色功能的实现125 课程设计总结15参考文献15评语及成绩01 前言在正整数中存在着许多数具有迷人的特性,如谭浩强教授在文献1第 120页中提到的水仙花数所谓的水仙花数就是满足组成它的各位数字的n次方之和恰好等于它本身的n位正整数。最早被人们认识

2、的水仙花数为 153。谈祥柏教授在文献2第7475页中谈到“数论大师(Hardy)在其名著 数学家的辨解中曾指出过,有四个三位数具有这种性质,除153外,其他三数为370,371与407。”,文献3也给出了由88个 自然数组成的水仙花数表。近年来计算机的发展及应用突飞猛进也为水仙花数的计算提供了很好的计算工具。但是,如果对每一个n 位正整数、求出它的各位数的次方之和,进而通过判别得到的和是否与它本身相等来判别该数是否为水仙花数,则需要遍历每一个正整数,可以看出每当位数增加1时,所要处理的正整数个数将增加1O倍。因此,当位数n增大时,其计算量将呈几何级数骤增。显然这种方法只适用于n 较小的情况,

3、对于较大的n如果也采用这种方法,即使应用计算机计算也是很困难的。本文从应用计算机计算水仙花数的角度出发,讨论应用计算机快速计算所有水仙花数的算法。2 课题介绍2.1功能要求(1)用C#语言实现程序设计;(2)循序渐进地从低位到多位展示水仙花数的计算机实现;(3)界面友好(良好的人机互交),程序要有注释。2.2主要任务(1)创建窗体作为交换和展示界面;(2)实现三位水仙花数的多种实现;(3)实现3-9位水仙花数的计算和展示;(4)实现3-17位水仙花数的计算和展示;(5)定义结构实现3-60位水仙花数的计算。2.3运行环境(1)WINDOWS2003/XP系统(2)Visual Studio 2

4、008开发环境2.4开发语言C#语言3 概要设计与详细设计3.1系统流程图系统的主要功能包括多位水仙花数的计算系统的流程及框架如图3.1所示。水仙花数简介3位水仙花数3-9位水仙花数3-17位水仙花数3-60位水仙花数单层循环计算三层循环计算递归计算BIGINT结构定义计算图3.1 系统流程图3.2详细设计(1)功能计算0-9的n次幂的详细设计计算0-9的n次幂功能是计算0-9的n次幂该功能的实现流程如下:private void CalculateArray(int n, long array) /Console.WriteLine计算并保存0-9的n次幂 for (int i = 0; i

5、 = 9; i+) arrayi = i; for (int j = 2; j = numLength; j+) arrayi *= i; (2)功能数组比较的详细设数据比较功能是比较判断两数组是否相等,如果两数组的每个对应元素都想等,则这两个数组相等。该功能的实现如下: private bool arrayEqual(long arrayLeft, long arrayRight) bool flag; flag = true; for (int i = 0; i = b) throw new OverflowException(初始值必须小于10*16); else bigInt0 = a

6、 % limit; bigInt1 = a / limit; public BigInt(BigInt a) bigInt = new long8; for (int i = 0; i = limit) throw new OverflowException(BigInt的long型加数不得超过最大的八位数); BigInt num = new BigInt(lhs); long carry = 0; /保存进位 num.bigInt0 = num.bigInt0 + rhs; for (int i = 0; i limit) carry = num.bigInti / limit; num.bigInti = num.bigInti % limit; /检测carry是否为0,如果不为0则表示num.bigInt7产生l进位溢出 if (carry 0) throw new OverflowException(BigInt与long加法运算后结果产生溢出即超过64位); return num; public static BigInt operator +(BigInt lhs,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号