打印1到1000之间的所有数字,其中数字为'总和可以被8分割

时间:2017-05-15 09:45:00

标签: javascript

我试图编写一个有效的函数,它将打印1到1000之间的所有数字,其中数字的总和可以被8整除。

我正在使用此system($^X, "script.pl", @ARGV);

for

但不确定数学。

4 个答案:

答案 0 :(得分:1)

这是一个使用现代JavaScript数组函数的版本。

方法如下:

  • 通过将数字转换为字符串(十进制表示法)并将所有字符放入数组中来确定数字的位数。这会将数字503转换为['5', '0', '3']
  • 首先将每个数字转换回一个数字(parseInt,默认采用十进制表示法),然后使用reduce函数计算总和,计算数字之和。
  • 当数字的总和可以被8整除时打印数字。我们通过查看除以8之后的余数是否为0来检查:sum % 8 === 0。这称为remainder或模数。



for (let i = 1; i <= 1000; ++i) {
  let digits = i.toString().split(''),
      sum = digits.map((d) => parseInt(d)).reduce((a, v) => a + v);
  if (sum % 8 === 0) {
    console.log(i, 'because', digits.join(' + '), '=', sum, 'is divisible by 8');
  }
}
&#13;
.as-console-wrapper {
  max-height: 100% !important;
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

for(var i = 1 ; i <= 1000; i++) {
    var digitSum = String(i).split('').reduce((a, b) => +a+(+b));
    if(digitSum % 8 === 0) {
        console.log(i)
    }
}

答案 2 :(得分:0)

这是数学和代码:

for(var i = 0 ; i< 1001; i++) {
  var stringNumber = i.toString();
  var sum = 0;
  for(var j = 0 ; j < stringNumber.length; j++) {
    sum+= parseInt(stringNumber.charAt(j));
  }
  if(sum%8===0) console.log(i);
}

下次,请确保您显示了尝试并且无效的最小代码解决方案的证明。

答案 3 :(得分:0)

以下是解决方案:

&#13;
&#13;
for(var i = 0 ; i< 1001; i++) {
  var arNum = i.toString().split('');
  var sumNum = arNum.reduce(add, 0);
  if(sumNum%8===0) console.log(i);
}

function add(a, b) {
    return a + b;
}
&#13;
&#13;
&#13;