如何解决获取所有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);
基本上,请检查所有可能的组合并检查每个数字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。