我目前正在尝试在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周)
答案 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
当50
为number
时,此代码输出100
,因为50
是100
的第二大因子。如果不是期望的输出,那么您想要的不是第二大因素。
如果您想要最大的主要因素,请再次忽略效率:
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
这似乎更像您的代码。