尼科彻斯定理
需求分析
需要验证尼科彻斯定理,尼科彻斯定理:任何一个整数的立方都可以写成一串相邻奇数之和(参考百度百科对尼科彻斯定理的解释)
功能设计
可以将用户输入的任意一个数的立方分解为一串相邻奇数之和的形式。
设计实现
将用户输入的数存储在变量中,定义一个空字符串用于存储分解后的式子,之后根据等差数列的求和公式和数列性质,利用二元一次方程组求出for
循环的初始状态和截止状态,由于奇数之间间隔为2,所以相应除2,在未达到数列末尾时在每个奇数后添加加号,末尾的奇数后不用添加。=,这样循环完就可以得出分解后的式子了。
测试运行
核心代码
for (int i = n * (n - 1)/2 ; i < n * (n + 1)/2 ; i++) {
if(i != n * (n + 1)/2 -1){
str =str + (i*2+1) + "+" ;
}else{
str =str + (i*2+1) ;
}
}
总结
这是我第一次接触尼科彻斯定理,但是我吸取了编写四方定理是犯错浪费时间的经验教训,先认真思考了尼科彻斯定理,找到了其关键点,就是等量关系:输入数的三次方等于一串相邻奇数之和,抓住这点编写程序的思路就很清晰了,使用for
循环进行寻找即可。但是奇数的个数不好确定,我通过上网学习了解到其个数等于输入数字的值。这个项目我在完成过程中请教了同学,在同学的帮助下我才得以较快的完成项目,在这一过程中我又一次体会到了界对学习的优势,在解决难题时效率会大大提高。
参考资料
PSP
步骤 | 耗时(min) | 百分比 |
---|---|---|
需求分析 | 15 | 12% |
设计 | 20 | 16% |
代码实现 | 50 | 40% |
测试 | 20 | 16% |
分析总结 | 20 | 16% |