首页 > 代码库 > 算法练习--整数拆分为素数乘积
算法练习--整数拆分为素数乘积
问题:
输入6
输出 1*2*3
1. build素数表
2. 从素数表按次序取素数,n除素数,如果不能整除,素数表索引++,否则,n/=素数,继续判断
3. 遍历素数表
4. 有限性:素数表需要足够大 ,如果数字非常大,此算法需要改变
JS 实现:
function p(n){ if(n<2) {return 0;} if(n == 2){return 1;} for(var i = 2; i < n; i++){ if(n%i == 0){return 0;} } return 1; } var pl = new Array(); for(var i = 2,index = 0;index<100;i++){ if(p(i) == 1){pl.push(i);index++;} } function f(n){ var pIndex = 0; var ret = "1"; for(;pIndex<100; ){ if( n % pl[pIndex] == 0){ ret += "*" + pl[pIndex]; n/=pl[pIndex]; } else{ if(p(n)){ ret += "*" + n; return ret; } pIndex ++; } } return ret; } console.log(f(111223));
算法练习--整数拆分为素数乘积
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。