func step(_ g: Int, _ m: Int, _ n: Int) -> (Int, Int)? {
    var z = [m]
    var x = m
    var y = n
    while x < y {
        x += 1
        z += [x]
    }
    for i in z {
        var k = 2
        while k < n {

        if i % k != 0 && i != k {

            }
            k += 1
        }

    }
    print(z)
    return (0, 0)
}
print (step(2, 100, 130))


因此,当前它以数组形式返回数字集100-130。整个函数的作用超出了我的要求,但现在我只想创建一个数组,该数组采用100-130的数字,或更具体地说,使用x- y的数字并返回一个素数数组。如果我%k部分需要帮助。是的,我知道这是多余的和冗长的,但我对此并不陌生。也就是说,请尝试仅使用简单的快捷方式。
话虽如此,我也可以举例说明如何使其更高效,但是我将需要对其中的一些原因进行解释,因为..im是新的。就上下文而言,假设仅进行20-30天(通常是编码)

最佳答案

你可以这样做:

let a = 102
let b = 576 // two numbers you want  to check within

/**** This function returns your array of primes ****/
func someFunc(x: Int, y: Int) -> [Int] {
    var array = Array(x...y) // This is a quick way to map and create array from a range . /// Array(1...5) . ---> [1,2,3,4,5]

    for element in array {
        if !isPrime(n: element) { // check if numberis prime in a for loop
            array.remove(at: array.index(of: element)!) // remove if it isnt
        }
    }

    return array
}

someFunc(x: a, y: b) //this is how you call this func.  someFunc(x: 4, y: 8) ---> [5, 7]


// THis is a supporting function to find a prime number .. pretty straight forward, explanation in source link below.
func isPrime(n: Int) -> Bool {
    if n <= 1 {
        return false
    }
    if n <= 3 {
        return true
    }
    var i = 2
    while i*i <= n {
        if n % i == 0 {
            return false
        }
        i = i + 1
    }
    return true
}


资料来源:Check if a number is prime?

10-02 13:25