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?