奇数的完美平方
Perfect squares from odd numbers
在JavaScript中,有没有比这更有效的计算奇数完全平方的方法(存储在数组perfectSqrs
中的最后一个完全平方是console.logged):
let n = 999,
oddNums = [],
i;
for (i = 3; i < n; i += 1) {
if (i % 2 !== 0) {
oddNums.push(i);
}
}
let oddLength = oddNums.length;
let perfectSqrs = [1],
j = 0;
while (j < oddLength - 1) {
perfectSqrs[j + 1] = perfectSqrs[j] + oddNums[j];
j += 1;
}
console.log(perfectSqrs[perfectSqrs.length - 1]);
算法和逻辑与 JS 无关。您可以完全避免第一个循环,也可以避免存储(内存效率)奇数。从 1 开始你的第二个循环并通过递增 2 而不是 1 (1,3,5,7,...) 进行迭代。
您似乎只想生成一个完美正方形数组?也许你可以这样做:
var squares = [1];
var numSquares = 100;
for (var i=3; i<numSquares*2; i+=2) {
squares.push(squares[squares.length - 1] + i);
}
console.log(squares);
对于这个算法不清楚的人,基本上:
- 1
- 4 (1+3)
- 9 (1+3+5)
- 16 (1+3+5+7)
- 25 (1+3+5+7+9)
完全平方本质上是奇数之和
在JavaScript中,有没有比这更有效的计算奇数完全平方的方法(存储在数组perfectSqrs
中的最后一个完全平方是console.logged):
let n = 999,
oddNums = [],
i;
for (i = 3; i < n; i += 1) {
if (i % 2 !== 0) {
oddNums.push(i);
}
}
let oddLength = oddNums.length;
let perfectSqrs = [1],
j = 0;
while (j < oddLength - 1) {
perfectSqrs[j + 1] = perfectSqrs[j] + oddNums[j];
j += 1;
}
console.log(perfectSqrs[perfectSqrs.length - 1]);
算法和逻辑与 JS 无关。您可以完全避免第一个循环,也可以避免存储(内存效率)奇数。从 1 开始你的第二个循环并通过递增 2 而不是 1 (1,3,5,7,...) 进行迭代。
您似乎只想生成一个完美正方形数组?也许你可以这样做:
var squares = [1];
var numSquares = 100;
for (var i=3; i<numSquares*2; i+=2) {
squares.push(squares[squares.length - 1] + i);
}
console.log(squares);
对于这个算法不清楚的人,基本上:
- 1
- 4 (1+3)
- 9 (1+3+5)
- 16 (1+3+5+7)
- 25 (1+3+5+7+9)
完全平方本质上是奇数之和