Нахождение наибольшего множителя числа в swift с помощью циклов - PullRequest
0 голосов
/ 14 октября 2018

В настоящее время я пытаюсь создать код в быстрой игровой площадке, который находит второй по величине фактор (не само число) числа при использовании цикла.Я выяснил, как отобразить все факторы числа, но есть ли простой способ сделать так, чтобы оно доставляло только одно?

ex: для '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 голосов
/ 15 октября 2018

Если вы хотите показать второй по величине фактор, последний фактор, кроме самого 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

Thisкод выводит 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

Это похоже на ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...