Показать сообщение отдельно
  #1 (permalink)  
Старый 26.08.2021, 14:08
Gm5 Gm5 вне форума
Интересующийся
Отправить личное сообщение для Gm5 Посмотреть профиль Найти все сообщения от Gm5
 
Регистрация: 10.07.2021
Сообщений: 19

Функция нахождения дружественных чисел в заданном интервале.
Ребят, привет! Решаю задачи по написанию функций, но со следующей задачей зашёл в тупик.
Сделайте функцию getFreindly, которая будет находить пары дружественных чисел в заданном промежутке и возвращать их в виде двухмерного массива вида [ [220, 284], [1184, 1210], [2620, 2924] ]. С помощью созданной функции найдите все пары дружественных чисел на промежутке от 1 до 9000.
Вот моё решение:
alert(Freindly(1, 9000));
function Freindly(num1, num2){
    let arr=[[]];
    let sum1 = getSum(getOwnDivisors(num1));
    let sum2 = getSum(getOwnDivisors(num2));
    for(let i=0; i<=2; i++){
        arr.push([i]);
        for(let j=num1; j<num2; j++){
            if(sum1==num2&&sum2==num1){
                arr.push([i][j]);
            }
        }
            return arr;
    }
}
function getOwnDivisors(num){
    let result=[];
	for(let i=1; i<9000; i++){
        if (9000 % i==0){
            result.push(i);
        }
    } return result;
}
function getSum(arr){
    String(arr).split('');
    let sum=0;
    for(elem of arr){
        sum+= Number(elem);
    }
    return sum;
}

Вот чувствую, что я что-то не так делаю, намудрил может быть лишнего, потому и в тупик зашёл. Что в моём решении не так? Подскажите правильное решение.
Ответить с цитированием