Факторизовать число в Javascript

Я изучил алгоритм факторизации чисел в C++ и Java, теперь решил "перевести" его на JS. Вот мой код:

<!DOCTYPE HTML>
<html>
 <head>
  <title>Factorization</title>
  <script>
 function fact(num)
 {
    var b = 2;
    while (num > b){
    while(num%b==0){
    num/=b;
    return b;
    }
    b++;
    if(num==b){
    return b;
    }
    }
 }
  </script>
 </head>

 <body>
 <form name="f1">
  Enter the Number  :<input type="number" name="txt1"><br>
  <input type="button" value="Factorize" onclick="alert('The answer is ' + fact(txt1.value))">
  </form>
 </body>
</html>

Что не так с этим? Это только предупреждает 1-й кратный.

Алгоритм работы P/S A в C++:

#include<iostream>
using namespace std;

int main(){
    int a;
    cin >> a;
    int b=2;
    while(a>b){
        while(a%b==0){
            a/=b;
            cout << b << endl;
        }
        b++;
        if(a==b){
            cout << b << endl;
        }
    }
}

2 ответа

Оператор return выходит из функции, как указано @Blaze Sahlzen, рассмотрите возможность создания и возврата строки:

function fact(num)
{
    let b = 2;
    let ans = "\n";
    while (num > b){
        while(num%b==0){
            num/=b;
            ans += b + '\n';
        }
        b++;
        if(num==b){
            ans += b + '\n';
        }
    }
    return ans;
}

Вы выходите из функции с первого раза. Вы можете взглянуть на код ниже, это поможет вам.

function fact(num)
 {
    var b = 2;
 var factors =1;
 if(num==b){
      return b;
    }
    while (num > b){
      if(num % b == 0)
   {
   factors +=','+b;
   }
 b++;
   }
   factors +=','+num;
   return factors;
 }
 <form name="f1">
  Enter the Number  :<input type="number" name="txt1"><br>
  <input type="button" value="Factorize" onclick="alert('The answer is ' + fact(txt1.value))">
  </form>

Другие вопросы по тегам