繁体   English   中英

如何在JavaScript中找到整数的因数?

[英]How do i find a factor of an integer in javascript?

我需要创建一个计算器,用户可以在其中输入数字,并计算给定数字的因数,立方和平方。

下面是我正在使用的代码。我不知道如何解决这个问题。 任何意见,将不胜感激。

 document.getElementById('calculate').addEventListener('click', estimateTotal); function estimateTotal(event) { event.preventDefault(); var initial2 = document.getElementById('initial').value; document.getElementById('factor').value = 0; document.getElementById('sqaure').value = initial2 * initial2; document.getElementById('cube').value = initial2 * initial2 * initial2; } 
 <form id="calculator" method="POST"> <p>Please enter a number between 0 and 50 <input name="initial" id="initial" type="text" size="20" required><button id="calculate">Calculate</button></p> <p>The Factorial of your number is: <input name="factor" id="factor" class="factor" type="text" size="20"></p> <p>The Square of your number is:<input name="sqaure" id="sqaure" class="sqaure" type="text" size="20"></p> <p>The Cube of your number is:<input name="cube" id="cube" class="cube" type="text" size="20"></p> </form> 

  **recursive JavaScript function factor(n)**

 **Check this link:** **http://www.javascripter.net/math/primes/factorization.htm**

function factor(n) {
 if (isNaN(n) || !isFinite(n) || n%1!=0 || n==0) return ''+n;
 if (n<0) return '-'+factor(-n);
     var minFactor = leastFactor(n);
 if (n==minFactor) return ''+n;
 return minFactor+'*'+factor(n/minFactor);
}

同时尝试因子和阶乘

 document.getElementById('calculate').addEventListener('click', estimateTotal); function estimateTotal(event) { event.preventDefault(); var initial2 = document.getElementById('initial').value; document.getElementById('Factorial').value = fact(initial2); document.getElementById('factor').value = factors(initial2); document.getElementById('sqaure').value = initial2 * initial2; document.getElementById('cube').value = initial2 * initial2 * initial2; } function fact(n) { if(n == 0) return 1; else return (n*fact(n-1)); } function factors(num) { var n_factors = [], i; for (i = 1; i <= Math.floor(Math.sqrt(num)); i += 1) if (num % i === 0) { n_factors.push(i); if (num / i !== i) n_factors.push(num / i); } n_factors.sort(function(a, b){return a - b;}); // numeric sort return n_factors; } 
 <p>Please enter a number between 0 and 50 <input name="initial" id="initial" type="text" size="20" required><button id="calculate">Calculate</button></p> <p>The Factorial of your number is: <input name="factor" id="Factorial" class="factor" type="text" size="20"></p> <p>The Factor of your number is: <input name="factor" id="factor" class="factor" type="text" size="20"></p> <p>The Sqaure of your number is:<input name="sqaure" id="sqaure" class="sqaure" type="text" size="20"></p> <p>The Cube of your number is:<input name="cube" id="cube" class="cube" type="text" size="20"></p> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM