我编写了一个功能,目前显示1000以下的所有素数。我可以继续增加1000以产生更多数字,但我不知道如何让它在运行后永远继续下去。
这是我目前的代码:
func generatePrimes() {
let numbers = 2...1000
for n in numbers {
var prime = true
for i in 2..<n {
if n % i == 0 {
prime = false
break
}
}
if prime == true { print(n) }
}
}
答案 0 :(得分:3)
您可以使用while
循环,参数为true
。这样,循环永远不会结束。
func generatePrimes() {
var n = 2
while true {
var prime = true
for i in 2..<n {
if n % i == 0 {
prime = false
break
}
}
if prime == true {
print(n)
}
n += 1
}
}
请注意,我们在while循环的每次迭代中使用变量(n
)并递增(加1)。
如果您希望它在点击某些n
时结束,则可以使用条件来检查n
和break
是否在循环之外。
func generatePrimes() {
var n = 2
while true {
if n == 1000 {
break
}
var prime = true
for i in 2..<n {
if n % i == 0 {
prime = false
break
}
}
if prime == true {
print(n)
}
n += 1
}
}
上述代码会在n
点击1000
时停止执行,并且不会针对该情况打印任何内容。
答案 1 :(得分:0)
使用while
循环代替for
循环。它也可以使用for
循环完成,但当您知道正在执行的迭代的数量或范围时,首选for
循环。如果您正在使用while循环,则只需设置循环的条件,在这种情况下,您需要将条件指定为true,因为您希望循环永远运行。
只需使用for
替换代码中的while
循环即可。它应该看起来像这样
while(true)
{
if n % i == 0 {
prime = false
break
}
}
答案 2 :(得分:0)
您还可以使用do {}
块和continue
语句建立无条件的无限循环。
AGAIN:
do {
print("step...")
continue AGAIN
}
答案 3 :(得分:-2)
func generatePrimes() {
var prime = true
let numbers = 2...1000
for n in numbers {
prime = true
if n == 2 || n == 3 {
print(n)
} else {
for i in 2..<n-1 {
if n % i == 0 {
//not prime numbers
prime = false
}
}
if prime == true {
print(n)
}
}
}
}
你可以这样做。只需排除1和n。