Найти разницу между 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 шт):
Все, что делает этот код - возводит числа в квадрат.
А что он должен делать - из описания пока непонятно. Может быть, нужно сделать два вложенных цикла, и смотреть разницу между получаемыми квадратами?
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}`;
