пока l oop и переменная не меняется - PullRequest
0 голосов
/ 21 апреля 2020
function test(num){
    var root1 = Math.sqrt(num);

    var ind=2;
    while(ind<=root1){
        if (ind%num==0 && IsPrime(ind)==true) {
            num=ind;
        }
        ind++;
        }
    return num;
}

Привет, в этом коде функция должна возвращать наибольший простой множитель заданного числа, но функция возвращает то же число. Например: test(123) возвращает 123

1 Ответ

0 голосов
/ 21 апреля 2020

У вас есть две проблемы:

  1. Вы хотите проверить, можно ли разделить num на ind, а не наоборот. Для этого можно проверить: num % ind == 0.

  2. Не следует повторно использовать переменную num для результата. Таким образом, вы перезаписываете исходное число, и результат будет неправильным. Объявите новую переменную, например, result.

...