【发布时间】:2021-10-24 01:04:22
【问题描述】:
嘿,伙计们,我正在尝试解决阶乘分解(代码战任务) 好吧,有些数字对我有用,直到我达到第 23 位,页面不断循环,请有人帮助我
function decomp(n) {
let c =[]
let sum =1
for(let i=n;i>=1;i--){
sum*=i
}
let k= 2
while(k<=sum){
if(sum%k!==0){
k++}
while(sum%k==0){
c.push(k)
sum = sum/k
}
}
return c.join('*')
}
该函数运行良好,直到我达到数字 23 并一遍又一遍地加载,任务是关于函数 decomp(n) 并且应该返回 n 的分解!以素数的递增顺序将其转换为素数,作为字符串。
阶乘可以是一个非常大的数字(4000!有 12674 位,n 可以从 300 到 4000)。
在 Fortran 中 - 与任何其他语言一样 - 返回的字符串不允许包含任何多余的尾随空格:您可以使用动态分配的字符串。
例子
n = 12; decomp(12) -> "2^10 * 3^5 * 5^2 * 7 * 11"
从 12 岁开始!能被 2 整除 10 次,被 3 整除 5 次,被 5 整除 2 次,被 7 和 11 整除一次。
n = 22; decomp(22) -> "2^19 * 3^9 * 5^4 * 7^3 * 11^2 * 13 * 17 * 19"
n = 25; decomp(25) -> 2^22 * 3^10 * 5^6 * 7^3 * 11^2 * 13 * 17 * 19 * 23
【问题讨论】:
标签: algorithm loops while-loop task loading