【问题标题】:How to find the previous prime number?如何找到前一个素数?
【发布时间】:2020-07-09 20:55:18
【问题描述】:

可能问题很清楚,不需要更多解释,但这是之前素数的例子:

The previous prime of 19 is ===> 17
The previous prime of 211 is===> 199

我失败的尝试

const getPreviousPrime = (number) => {
    for(let i = number - 1; i >= 2; i--) {
       for(let j = 2; j <= Math.sqrt(i); j++ ) {
          if(i % j === 0) break
          return i
      }

    }
}

【问题讨论】:

  • 显示您的试用错误的示例。然后弄清楚你的代码在那个例子中到底做了什么,你可能会自己解决这个问题。
  • 我的代码只是从原始数字中抽象出 2
  • j &lt;= 9 是怎么回事?不应该是j &lt;= Math.sqrt(i)
  • 从质数算法开始可能会有所帮助,然后从那里开始工作。
  • @James 谢谢詹姆斯,但我仍然有同样的问题

标签: javascript


【解决方案1】:

假设您有一个isPrime() 函数,开始编写。

然后你就可以轻松编写循环了。

const getPreviousPrime = (number) => {
  for (let i = number - 1; i >= 2; i--) {
    if (isPrime(i)) {
      return i;
    }
  }
}

您可以在Number prime test in JavaScript 找到许多isPrime() 的实现

【讨论】:

  • 谢谢,问题可以更简单,只是开始的方式,
【解决方案2】:

希望这会对你有所帮助。

const getPreviousPrime = (number) => {
    for(let i = number - 1; i >= 2; i--) {
        let prime = true;
        for(let j = 2; j <= Math.sqrt(i); j++ ) {
            if(i % j === 0) {
                prime = false
                break;
            }
        }
        if (prime == true) {
            return i
        }
    }
    return 2;
}

console.log(getPreviousPrime(19))
console.log(getPreviousPrime(211))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多