@No.HJ76 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
- @problem description:
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19- @input description:
输入说明
输入一个int整数- @output description:
输出分解后的string
while(n = readline()){
var arr = [];
let one = Math.pow(n,2);
if(one % 2 != 0){
arr.push(one);
for(var i=1;i<=(n-1)/2;i++){
arr.push(one + i * 2)
arr.unshift(one - i * 2)
}
}else{
for(var i=0;i< n/2;i++){
arr.push(one + 1 + i * 2)
arr.unshift(one - 1 - i * 2)
}
}
console.log(arr.join("+"));
}
算法分析:
经典数学问题:
运用到了数学指数运算方法:Math.pow(底数,指数)
比如:Math.pow(3,2) = 9
之后分析其中的数学规律:我们可以先找到结果数列的中间值:底数的平方。
这个中间值会存在奇偶两种情况:
① 底数的平方(one)为奇数:
直接先把one的值加入结果数组(arr)中,之后再循环(n-1)/2
次,每次循环都在数组中加上已有奇数列最近的前一项和后一项;
以5为例:
one = Math.pow(5,2)
// 25
arr = [25];
arr = [23,25,27];
arr = [21,23,25,27,29];
② 底数的平方(one)为偶数:
直接循环n/2
次,每次循环也是在数组中加上已有奇数列最近的前一项和后一项;
Code_Zevin_J —— 2020-08-25 21:01:13