0
点赞
收藏
分享

微信扫一扫

逻辑练习(求180拥有的质数

独兜曲 2022-02-18 阅读 84
javascript
function getNextDivice (initYinzi,initYinziList) {
  let nextyinzi = initYinzi+1
  let flag = false
  for(let i in initYinziList){
    if(nextyinzi%initYinziList[i]==0){
      flag = true
    }
  }
  if(flag){
    return getNextDivice (nextyinzi,initYinziList)
  }else{
    return nextyinzi
  }
}


function getLastnum (lastlist,num){
  if(num==1){
    return num
  }
  let divice = lastlist.reduce((prev,cur)=>{return prev*cur})
  return num/divice
}
function getYinziList (num,initYinzi,initYinziList) {
  let list = [] ;
  let innnerInitYinziList = initYinziList
  let samelist = getSameYinziList (num,initYinzi)
  list = list.concat(samelist)
  if(getLastnum(samelist,num)!==1){
      let lastnum = getLastnum(samelist,num)
      let nextyinzi = getNextDivice (initYinzi,innnerInitYinziList)
      innnerInitYinziList.push(nextyinzi)
      list = list.concat(getYinziList (lastnum,nextyinzi,innnerInitYinziList))
  }
  return list
}

function getSameYinziList (lastnum,yinzi) {
  let list = [];
  if(lastnum%yinzi==0){
      list.push(yinzi)
      list = list.concat(getSameYinziList (lastnum/yinzi,yinzi))
  }
  return list
}

console.log(getYinziList (180,2,[2]))
举报

相关推荐

0 条评论