如何让Swift循环无限期地运行(永远)

时间:2016-07-11 06:15:07

标签: ios swift primes func

我编写了一个功能,目前显示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) }
}
}

4 个答案:

答案 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时结束,则可以使用条件来检查nbreak是否在循环之外。

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。