《Java课程设计--公倍数.docx》由会员分享,可在线阅读,更多相关《Java课程设计--公倍数.docx(12页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求1第2章概要设计22.1整个程序的模块结构及流程22.2数据存储格式22.3输入数据合法性的检测及处理32.4各个方法的描述31.4.1 最大公约数32. 4.2最小公倍数3第3章程序功能的实现42.1 主函数的实现42.2 各个方法的实现43. 2.1求最大公约数和最小公倍数4第4章调试及发现问题的解决6第5章程序测试及分析7第6章总结9参考文献W第1章课题概述本次软件开发基础JAVA课程设计的题目目的是寻找到能除尽1至n的的每个数字的最小整数。1.1 课题的目的为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。但也并非纯
2、粹的偶然:60是个优秀的数字,它的因子比较多。事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。我们希望寻找到能除尽1至11的的每个数字的最小整数。不要小看这个数字,它可能十分大,比如n=100,则该数为:69720375229712477164533808935312303556800通过计算机编程来解决我们无法计算求出的庞大的最小公倍数是具有一定意义的。1.2 课题的要求请编写程序,实现对用户输入的n(n100)求出n的最小公倍数。例如:用户输入:6程序输出:60用户输入:10程序输出:2520第2章概要设计2.1整个程序的模块结构及流程根据课题要求,整个程序在
3、输入的整数情况不同时会有不同的处理方法。程序各功能模块的划分及主要流程如图2-1所示。图2-1整个程序各功能模块间的流程2.2数据存储格式数据存储格式采用的是Biglnteger类型,你可以看到仅仅输入数字:10,运算结果就已经非常庞大,所以基本的数据类型无法再满足该程序的实现,因此我们才采用了Biglnteger类型进行存储。2.3输入数据合法性的检测及处理由于输入的数据范围有限定,所以需要对输入的数据进行检测及处理,当输入的数字超过100或者小于等于0时,显示“请输入1-100的整数”,当输入的n为1时,由于方法中会用到n-1,为了避开报错,直接输出1,当输入其他整数时,就可以算出bn的最
4、小公倍数。2.4各个方法的描述1.4.1 最大公约数两个数的最大公约数可以使用辗转相除法来求解,先定义两个变量m,n,将较大的数赋给n,将较小的数赋给叫然后大数除以小数,小数除以余数,最后余数为零时,所求得的数就是最大公约数。2. 4.2最小公倍数求一系列整数的最小公倍数,可以先求出前两个数的公倍数,然后求它们的公倍数与第三个数的公倍数,以此类推,最后求出的数就是这一系列数的最小公倍数。第3章程序功能的实现2.1 主函数的实现输入一个数,赋给它int类型的值,建立一个扫描器,定义一个BigInteger的类,封装bi,采用for循环,调用getcommon的方法,先求第一个数和第二个数的最小公
5、倍数,再将这个最小公倍数去和第三个数求最小公倍数,直到最后一个。主函数实现的代码如下:publicstaticvoidmain(Stringargs)System.out.Println(请输入一个数:“);intm;Scannersc=newScanner(System,in);m=sc.nextlntO;BigIntegerbi=newBigInteger(T);for(intj=1;j=m;j+)Commonc=newCommon(bi);bi=c.getCounon(newBigIntegeNj+);)sc.closeO;SySteIn.out.printin(“它的公倍数为:+bi.
6、toString();2.2 各个方法的实现3. 2.1求最大公约数和最小公倍数辗转相除法,定义两个变量m和n,将较大的数赋值给n,较小的数赋值给m,然后大数除以小数,小数除以余数,最后直到余数为零的时候所求得数就是最大公约数求最大公约数和最小公倍数的代码实现如下:publicclassCommonprivateBigIntegern;Common(BigIntegern)this,n=n;)publicBiglntegergetCommon(BigIntegerm)BigIntegerM=m.multiply(n);BigIntegerr=n.remainder(m);Stringstr=r
7、.toString();while(!str.equals(*0zz)n=m;m=r;r=n.remainder(m);str=r.toString();)returnM.divide(m);)第4章调试及发现问题的解决虽然在程序的编写过程中遇到了很多问题,但通过网络资源和请教同学,问题得到了解决,程序实现及调试过程中遇到的主要问题及解决方法如下。1、最初采用Iong类型来作为存储结构,但输入IO后得到的数字却与正确答案差异很大。解决方法:使用Biglnteger类型存储数据。该类型可以满足程序的正确实现。2、采用什么方法来计算前两个数的最小公倍数与第三个数的最小公倍数?解决方法:可以采用fo
8、r循环来依次计算出第一个数至最后一个数的最小公倍数,方法简便且清晰明了。第5章程序测试及分析运行程序,直接弹出请用户输入,此时用户可以输入一个自己所需要的整数。图5-1程序运行后的界面图5-2所示,是在输入的数为1的时候的情况,直接输出1。可以直接输入下一个数。图5-2输入的数为1图5-3所示,是在输入的数在范围内的情况。可以直接输入下一个数。图5-3输入的数在限定范围内第6章总结为期一周的课程设计画上了句号,虽然做得并不是很满意,但也是一次锻炼自己能力的体验,在这一次的课程设计中,也学到了很多东西。首先,遇到自己难以解决的问题要通过自己可利用的资源来解答疑问,例如去网上找相关知识的视频,或是请教周围同学。其次,现在我们写的代码可能会有很多错误的地方,通过答辩,老师给你提出修改要求后就要积极修改。通过这次课程设计,也发现了自学能力的重要性,大学是一个需要自我管理的地方,很多程序需要用到你课堂上没有学习到的知识。这一年不是顺利的一年,因为很多插曲发生,从大二开始,我会努力学习专业知识,争取有所提高。参考文献1宋波,李晋,李妙妍,张悦.JaVa程序设计一一基于JDK6和NetBeanS实现M.北京:清华大学出版社.2011.