220331他人の草



プログラマー77884題



説明する

function solution(left, right) {
  let arr = [];
  let numArr = [...Array(right - left + 1).keys()].map((key) => key + left);
  for (let i = left; i <= right; i++) {
    count = 0;
    for (let j = 1; j <= i; j++) {
      if (i % j == 0) {
        count += 1;
      }
    }
    arr.push(count);
  }

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 != 0) {
      numArr[i] = -numArr[i];
    }
  }
  return numArr.reduce((tot, cur) => (tot += cur), 0);
}
  • 前後で受信数字を1つの配列
  • に配列する.
  • 二重複文に薬水が出現した場合countに+1を加え,数
  • を把握した.
  • arrという空の配列にcountを入れる
  • 条件文を使用してarr配列の要素を2に分割する場合、0でない場合は奇数として表されるため、負の数に置き換えられます.
  • reduce関数で
  • を加算

    他人の解答

    function solution(left, right) {
        var answer = 0;
        for (let i = left; i <= right; i++) {
            if (Number.isInteger(Math.sqrt(i))) {
                answer -= i;
            } else {
                answer += i;
            }
        }
        return answer;
    }