使用循环快速查找数字的最大因数

时间:2018-10-14 20:51:13

标签: swift loops

我目前正在尝试在Swift Playground中创建一个代码,该代码在使用循环时查找数字的第二大因子(而不是数字本身)。我已经弄清楚了如何显示一个数字的所有因素,但是有一种简单的方法可以让它只提供一个吗?

例如:对于“ 15”,它将是“ 5”

谢谢!

使用代码更新:

var number = 15

for i in 2...number {
    if number % i == 0 {
        while (number % i == 0) {
            number /= i
            }
            print(i)
        }
    }

这是我到目前为止所拥有的..我是一个初学者(上课3周)

1 个答案:

答案 0 :(得分:1)

如果要显示第二大因子,则number本身之外的最后一个因子最大。

忽略效率,此代码将起作用:

var number = 15

var theSecondLargestFactor: Int = 1
for i in 2..<number { //Ignore the largest factor `number` itself
    if number % i == 0 {
        //Replace `theSecondLargestFactor` when a larger factor is found
        theSecondLargestFactor = i
    }
}
print(theSecondLargestFactor) //->5

50number时,此代码输出100,因为50100的第二大因子。如果不是期望的输出,那么您想要的不是第二大因素。


如果您想要最大的主要因素,请再次忽略效率:

var number = 100

var theLargestPrimeFactor: Int = 1
for i in 2...number { //The `number` itself may be the largest prime factor, so include it
    while number % i == 0 {
        number /= i
        theLargestPrimeFactor = i
    }
}
print(theLargestPrimeFactor) //->5

这似乎更像您的代码。