如何在一个函数中快速调用另一个函数?

问题描述 投票:-2回答:1

我正在学习快速,并且我已经编写了两个功能,并且已经尝试了它们自己,它们都很好地工作。但是,当我尝试在另一个函数中调用一个函数时,似乎无法获得所需的输出。

当前的任务是,一个函数应打印素数,而另一个函数应进行计算,并且检查数字是否是素数。我应该从打印素数函数中调用检查素数是否是素数

下面是我的代码:

此函数计算X:Int是否为质数。设置为布尔值是因为我应该在其下面的函数中打印“ true”或“ false”。

func isPrime(_ x: Int) -> Bool {
    if(x%2 == 0 || x%3 == 0){
        if(x == 2 || x == 3){
            return(true)
        }
        return(false)
    }
    else{
        //if the number is less than or equal to 1, we'll say it's not prime
        if(x <= 1){
            return(false)
        }


  }
    return true
}

此段计算从1到n的素数的打印。

func PrintPrimes(upTo n: Int) {
    for x in 1...n {
        var count = 0
        for num in 1..<x {
            isPrime(x)
            count += 1

        }
        if count <= 1 {
            print(isPrime(x))
        }
    }
}

此作品仅运行两次,我不确定为什么。我不知道是否是因为我没有正确调用它,或者我不得不改变一些计算方法。

感谢所有帮助

编辑:

这里是原始printPrimes(),在我决定在函数中调用isPrime之前。此函数仅计算素数并将其打印到n。

func printPrimes(upTo n: Int) {
    for x in 1...n {
        var count = 0
        for num in 1..<x {
            if x % num == 0 {
                count += 1
        }

    }
        if count <= 1 {
            print(x)
        }
   }
}
swift function swift-playground
1个回答
0
投票

您的第二个例程仅打印两个值,因为它正在调用isPrime,但绝不对返回的值做任何条件,而无论如何都要递增count。而且由于仅在count<= 1的情况下才进行打印,因此仅在n的前两个值时才发生。

但是,假设您尝试将素数打印到一定数量,可以这样做:

func printPrimes(upTo n: Int) {
    for x in 1..<n {
        if isPrime(x) {
            print(x)
        }
    }
}

[不幸的是,isPrime也不正确。因此,您必须先解决该问题。例如,考虑25。该数字不能被2或3整除,但也不是素数。

© www.soinside.com 2019 - 2024. All rights reserved.