获取所有3位数字的总和为11或可以说JS中的模块为1

问题描述

作为回应,我希望所有3位数字的总和为11,并给出模块1和 还想知道如何在js中将000推入数组。

例如,数字= 128,总和= 11,模块(余数)= 1。 这样,我希望所有这些数字都在数组中。 任何人都可以共享相同的逻辑。

先感谢

解决方法

您可以采用强力方法,并用11来检查总和。不需要对其余部分进行检查,因为11总是除以10的其余部分。

const
    getSum = v => [...v.toString()].reduce((a,b) => a + +b,0),values = [];


for (let i = 1; i < 1000; i++) {
    if (getSum(i) === 11) values.push(i);
}

console.log(values);
.as-console-wrapper { max-height: 100% !important; top: 0; }

,

这是您想要的吗?

var arr=[1,128,15];
var remainder = 127;
var result = arr.filter(function(i) {
  var str=i.toString().split('');
  var sum=0;
  str.forEach(function(c) { return sum+=Number(c); });
  return sum===11 && (i%remainder)===1;
});

更多幻想和ES6:

const arr=[1,15];
const remainder = 127;
const result = arr.filter(i=>{
  const sum=i.toString().split('').reduce((s,v)=>(+v)+s,0);
  return sum===11 && (i%remainder)===1;
});
,

我不确定第二次检查应该是什么(某物的模数必须为1)。如果那是因为该数字的所有位数的模数必须为1,那么您可以按照以下方式进行操作:

var results = [];
for (let i = 1; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    for (let k = 0; k < 10; k++) {
      if (i + j + k === 11 && i % j % k === 1) {
        results.push(i.toString() + j.toString() + k.toString());
      }
    }
  }
}

console.log(results);

OR:

var results = [];
for (let i = 100; i < 1000; i++) {
  const [one,two,three] = i.toString().split('').map(i => +i);
  if (one + two + three === 11 && one % two % three === 1) {
    results.push(i.toString());
  }
}

console.log(results);

基本上,请检查所有可能的组合并检查每个数字。