【发布时间】:2017-02-09 11:07:11
【问题描述】:
我在 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>
它有什么问题吗?它只提醒第一个倍数。
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;
}
}
}
【问题讨论】:
-
找到第一个因素时,您正在调用
return语句。所以自然程序控制退出功能。相反,将因子存储在一个数组中并在最后返回整个数组。
标签: javascript c++ prime-factoring factorization