我将尝试计算阶乘中最不显著的非零数字。
作为上述代码的一部分,为了计算最不重要的非零数字,我首先忽略所有5的倍数,其次,在阶乘计算的每个步骤中,我从10中取余数来保留计算过程中每个步骤的非零数字。最后,我将
上述代码似乎对n = 1,2 ... ... 8的值运行良好。但是在n = 9时,该代码返回的最少重要的非零数字为3,而应该返回8。
例如:Factorial(9) = 362880,因此最不重要的非零数字= 8。
错误可能是什么,我应该如何进行更正?还有没有另一种更有效的方法来计算这个结果?
注意:我只是为了验证目的而包含计算阶乘的代码,我的最终目标是计算最不重要的非零数字,并且当n为十亿(实际计算和读取阶乘不可行或不可取)的最坏情况时。
我有以下代码片段:
$(document).ready(function() {
$('#submit').click(function() {
var n = $('#number').val();
get_result(n);
});
});
function get_result(n) {
var factorial = 1;
var factorial2 = 1;
for (i = 1; i <= n; i++) {
factorial = factorial * i;
}
var count_5 = 0;
for (j = 1; j <= n; j++) {
if (j % 5 != 0) {
factorial2 = factorial2 * (j % 10);
factorial2 = factorial2 % 10;
} else if (j % 5 == 0) {
count_5 = 1;
}
}
if (count_5 == 1) {
factorial2 = factorial2 * 5;
}
console.log(factorial2);
factorial2 = factorial2.toString();
var digit = 0;
for (i = 0; i < factorial2.length; i++) {
if (factorial2[i] != '0') {
digit = factorial2[i];
}
}
$('#display').text("Factorial of " + n + " is " + factorial);
$('#display2').text("Least significant digit of Factorial of " + n + " is " + digit);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="display">
</div>
<div id="display2">
</div>
<input type="text" value="" id="number">
<input type="submit" id="submit">
factorial2
的最终值乘以5,然后将其转换为字符串并查找字符串中最后一次出现的非零数字。上述代码似乎对n = 1,2 ... ... 8的值运行良好。但是在n = 9时,该代码返回的最少重要的非零数字为3,而应该返回8。
例如:Factorial(9) = 362880,因此最不重要的非零数字= 8。
错误可能是什么,我应该如何进行更正?还有没有另一种更有效的方法来计算这个结果?
注意:我只是为了验证目的而包含计算阶乘的代码,我的最终目标是计算最不重要的非零数字,并且当n为十亿(实际计算和读取阶乘不可行或不可取)的最坏情况时。