1、中国矿业大学徐海学院计算机系软件认知实践报告姓 名: 王荣轩 学 号: 22120431 专 业: 计算机科学与技术 设计题目: Goldbach 成 绩: 指导教师: 2013 年 12 月目 录1 题目概述 .11.1 前言.11.2 题目、要求及示例 11.2.1 2013 ACM 长沙赛区网络赛 Default Problem Set G-Goldbach11.2.2 题目要求 .11.2.3 示例 .11.2.4 题目翻译 .21.3 解题思路 .21.4 主要难点 .22 程序总体设计 .32.1 程序总体实现功能.32.2 总体设计.32.2.1 程序模块 .32.2.2 流程图
2、 .43 算法 .54 程序代码 .7参考文献 .13中国矿业大学徐海学院软件认知实践报告- 1 -1 题目概述1.1 前言本题来自 2013 ACM/ICPC Asia Regional Changsha Online G 题,题目内容围绕素数和分类匹配的情况展开,通过对组成情况的预处理,合理分类讨论,并避免重复情况,从而解题。1.2 题目及要求1.2.1 2013 ACM 长沙赛区网络赛 Default Problem Set G - GoldbachFancy is learning mathematics recently. Hes already mastered the use o
3、f multiplication and addition days before, so today hes going to learn prime number. After reading the learning material, hes been asked to complete a simple test. Hes been given an integer X larger than 1, using multiplication, addition and at most 3 prime numbers, how many ways could he get the an
4、swer as X exactly? Since that Fancy is a new learner of mathematics, hes still not familiar with brackets. So in the calculation, the addition is always performed after multiplication.1.2.2 题目要求InputThere will be multiple test cases. Each test case contains a single integer X (1 sqrt(30)算法结束。第 3 步把
5、prime值为 true 的下标输出来:for(i=2; i #include #include #include #include #include #include #include #include #include #include #include #include #include #define eps 1e-6 #define INF 0x3f3f3f3f #define PI acos(-1.0) #define lson l,m,(rtnum) return 0; if(n!=1) res+; if(res=num) return 1; return 0; 中国矿业大学徐海
6、学院软件认知实践报告- 11 -/-主函数-int main() init(); int x; long ans; /ans 表示可行的方法数while(scanf(“%d“, ans+=mul(x,1); /一个质数相乘的情况 ans+=mul(x,2); /两个质数相乘的情况 ans+=mul(x,3); /三个质数相乘的情况 /-加法和乘法的情况- for(int i=1;i=2) 中国矿业大学徐海学院软件认知实践报告- 12 - if(t-ppi=2 else temp+=num1t-1; /除去一个和 ppi相等的一种情况 else temp+=num1t; else break;
7、ans+=temp/3; /计算了每种情况计算了三次 /此 for 循环下为两个数相同,另外一个不相同的情况for(i=1;i=2) if(primet) if(t!=ppi) ans+; else break; /此 for 循环下为三个相同的情况中国矿业大学徐海学院软件认知实践报告- 13 -for(i=1;i=ppi*3) if(x=ppi*3) ans+; else break; /-两个数加法的情况- ans+=num1x; /两个不同数的加法 ans+=num2x; /两个相同的 printf(“%lldn“,ans); return 0; 中国矿业大学徐海学院软件认知实践报告- 14 -参考文献1 严蔚敏.数据结构M.北京 :清华大学出版社,2011.2 吕风翥.C+语言基础教程M. 北京: 清华大学出版社,2012.3 秦婧等.21 天学通 C# M.北京:电子工业出版社,2011.7.