javascript - 函数和方程混淆

javascript - functions and equations confusion

 var number = prompt('Input a number!');
 var n = number;
   function getList() {


 for (var n = 1; n <= 17; n++) {


   if (n % 3 == 0 || n % 5 == 0) 
     console.log (n);
   }
 }


console.log(getList());
console.log((n*(n+1))/2);

//equation for summation: (n*(n+1))/2

我正在尝试 return 可被 3 或 5 整除的数字之和最多为 17。到目前为止,它成功了一半;它列出了所有数字,但我找不到 return 总和的方法。

我有求和方程,但我找不到一种方法来输入它以使其起作用。你如何得到方程来引用列表而不是引用输入的数字?

答案应该是 60。有什么线索吗?谢谢!

var sum = 0;
for (var n = 1; n <= 17; n++) {
   if (n % 3 === 0 || n % 5 === 0) 
     sum += n;
}

console.log(sum);

使用一个变量来添加数字,return 它在 for 循环之后。

下面是例子。

function getList() {
  var sum = 0;

  for (var n = 1; n <= 17; n++) {
    if (n % 3 == 0 || n % 5 == 0) {
      sum += n;
    }
  }
  
  return sum;
}


console.log(getList());

如果你想要一个等式:)

function sumOfNumbersDivisibleBy3Or5(n) {
   const by3 = Math.floor(n/3),
         by5 = Math.floor(n/5),
         by3And5 = Math.floor(n/3/5);

  return 3*by3*(by3+1)/2 + 5*by5*(by5 + 1)/2 - 3*5*by3And5*(by3And5 + 1)/2
}

console.log(sumOfNumbersDivisibleBy3Or5(17))

两件事:

  1. 只是 return 来自您的 getList 函数的总和

  2. 确保您的提示输入已转换为整数,否则它将被视为字符串并且您的n*(n+1)/2将是错误的

var number = parseInt(prompt('Input a number!'));
var n = number;

function getList() {
  var sum = 0;
  
  for (var n = 1; n <= 17; n++) {
    if (n % 3 == 0 || n % 5 == 0) {
      console.log (n);
      sum += n;
    }
  }
  
  return sum;
}


console.log(getList());
console.log(n, (n*(n+1))/2);

var number = prompt('Input a number!');
 function getList() {
  var sum = 0;
  for (var n = 1; n <= number; n++) {
   if (n % 3 == 0 || n % 5 == 0) 
     sum+=n;
   }
  return sum;
 }
console.log(getList());

它会 return 1 和输入数字之间所有可被 3 或 5 整除的数字之和