Факторизовать число в 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 Рабочий алгоритм в 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;
}
}
}

0

Решение

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

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>
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;
}
1

По вопросам рекламы [email protected]