文档介绍:中国矿业大学徐海学院计算机系《软件认知实践》报告姓名:王荣轩学号:22120431专业:计算机科学与技术设计题目:Goldbach成绩:指导教师:2013年12月目录1题目概述 、要求及示例 ---Goldbach 22程序总体设计 43算法 54程序代码 7参考文献 –G题,题目内容围绕素数和分类匹配的情况展开,通过对组成情况的预处理,合理分类讨论,并避免重复情况,从而解题。-'salreadymasteredtheuseofmultiplicationandadditiondaysbefore,sotodayhe',he''sbeengivenanintegerXlargerthan1,usingmultiplication,additionandatmost3primenumbers,howmanywayscouldhegettheanswerasXexactly?SincethatFancyisanewlearnerofmathematics,he',(1<X≤80000),,pleaseoutputitmodulo**********.:Inthe3rdcase,8=2*2*2=2+2*3=2+3+3=3+5,,他已经掌握了加法和乘法的用法,他今天要学习素数。看完学习材料,他被要求完成一个简单的测试。给他一个大于1的整数,用乘法,加法和最多3个素数,他有多少种方法得到答案为x?他还不熟悉括号,所以在计算中,加法总是在乘法之后进行的。(大意概括:给定任意一个数x(1<x<=80000),可以求出用两种运算法则(加法和乘法)和最多三个素数组合为x的所有方法种数。),筛出素数,然后分情况讨论:1、只有乘法,一个素数相乘,两个素数相乘,三个素数相乘。2、有乘法有加法。先减去一个素数,然后再判断是否能由两个素数相乘凑得。3、三个素数的加法。分三种情况,都不相同,有两个相同,三个都相同。4、两个素数的加法。分两种情况,不相等,相等。最后将所列举情况得到的方法种数累加,去重,输出结果。、素数筛选。因为题目所给的范围较大,所以筛选素数要考虑到复杂度问题,争取在尽量短的时间内筛选出所给范围内的素数。对应方案:采用素数筛选法,从2开始,依次递加到sqrt(i)前的最小整数,将其所有的在范围内的倍数都筛选掉。2、去重。题目中不同情况下会存在交叉,考虑不同情况时容易出现叠加,从而导致答案有重叠。对应方案:三种组合情况x+y+z,x*y*z,x*y+z,要么x,y,z都不同,要么有两个相同,要么有三个相同,对都不同情况结果会重复两次,对于有两个相同的会重复一次,统计出三个相同的,两个相同的,最后减掉即可。个别情况中如x+y+z的情况不好处理时,最好单独考虑。(1<x<=80000),可以求出用两种运算法则(加法和乘法)和最多三个素数组合为x的所有方法种数。:乘法