Найти разницу между perfect square и сравнить с входным значением

введите сюда описание изображения

const findSquares = num => {

  for(let i = 0; i < 100; i++) {
    const valueArray = Math.pow(i, 2)

    const nextValueArray = valueArray + num

    if(nextValueArray - valueArray === num) {
      return `${nextValueArray} - ${valueArray}`
    }
  }
}

На выходе должно быть 25-16. Пробовал прибавлять к текущему значения квадрата получаемое число и потом делать проверку на разницу двух квадратов, но не выходит. Максимум что делает это получает входное значение из первых любых значений квадрата


Ответы (1 шт):

Автор решения: MBo

Все, что делает этот код - возводит числа в квадрат.

А что он должен делать - из описания пока непонятно. Может быть, нужно сделать два вложенных цикла, и смотреть разницу между получаемыми квадратами?

    for(let i = 1; i < 100; i++) {
       let sqi = i * i;
       for(let j = i + 1; j < 100; j++) {
          let sqj = j * j;
          if (sqi - sqj == num)
              чего-то делать
       }   
    }

После того, как дано условие задачи - оказывается, там два соседних квадрата нужно смотреть

const findSquares = num => {
  for(let i = 0; i < 1000; i++) {
     let sqi = i * i;
     let sqj = (i + 1)*(i + 1)
     if (sqj - sqi == num) {
           return `${sqj}-${sqi}`;
      }   
   }
};

Однако решение можно получить и без перебора - достаточно посмотреть в школьном учебнике, чему равна разность двух соседних квадратов. Поскольку гарантировано, что входное нечётное, то весь код вот:

const findSquares = num => {
  let i = (num - 1) / 2;
  return `${(i+1)*(i+1)}-${i*i}`;
};

или

  return `${(i*i + num}-${i*i}`;
→ Ссылка