首页 > 解决方案 > 致命错误:无法形成具有上界 < 下界的范围

问题描述

func isPrime(_ x: Int) -> Bool {
  var isPrimeNumber = true
    for divisor in 2...(x - 1) {
    if x % divisor != 0 {
    isPrimeNumber = true
  } else {
    isPrimeNumber = false
  }
 }
 return isPrimeNumber
}    

func printPrimes(upTo n: Int) {
  for y in 1...n {
     if isPrime(y) == true {
       print(y)
     }
    }
  }

printPrimes(upTo: 12)

编写一个名为printPrimes(upTo n: Int). 该函数应打印介于 1 和 n 之间的素数。例如,如果您传入 100,该函数应该打印 1 到 100 之间的素数。如果一个数字只能被它自己和 1 整除,并且不能被任何其他数字整除,那么它就是素数。使用 n 的几个不同值调用您的函数,并验证它是否打印了正确的数字。

我不明白为什么会收到此错误消息:

致命错误:无法形成具有上界 < 下界的范围

标签: swift

解决方案


在行

for divisor in 2...(x - 1) {

对于 x = 2 或 x = 1,上限将小于下限,在您的情况下为 2。

在这种情况下,您应该检查 x 的值应该始终满足 (x-1) 大于 2 的条件。


推荐阅读