swift - 致命错误:无法形成具有上界 < 下界的范围
问题描述
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 的几个不同值调用您的函数,并验证它是否打印了正确的数字。
我不明白为什么会收到此错误消息:
致命错误:无法形成具有上界 < 下界的范围
解决方案
在行
for divisor in 2...(x - 1) {
对于 x = 2 或 x = 1,上限将小于下限,在您的情况下为 2。
在这种情况下,您应该检查 x 的值应该始终满足 (x-1) 大于 2 的条件。
推荐阅读
- python - 如何在没有缩进错误的情况下添加更多选项?
- c++ - C / C++ 更清晰的#includes
- java - Hibernate 1:1 双向映射失败 - 实体字段为空
- java - Maven / Java项目中目标文件夹旁边的“半持久”文件的备份文件夹?最佳实践?
- react-native - React Native 推送通知使应用程序崩溃
- python-3.x - 根据两个dfs上的日期列将一个df的列附加到另一个df - pandas
- flutter - 为什么 Dart Uri 用“+”替换空格?
- snakemake - Snakemake,RNA-seq:如何根据所分析样本的特征执行管道的一个子部分或另一个子部分?
- c++ - g++ 链接器是静态链接还是动态链接 libusb 和 pthreads?
- asp.net-core - asp.net 核心页脚中的页码(部分视图)