как получить ближайший Int от пола Int? - PullRequest
0 голосов
/ 30 июня 2018

Мне нужно самое большое int на или ниже sqrt n.

Я получаю Невозможно использовать мутирующий член для неизменяемого значения: 'sqrt' возвращает неизменяемое значение

func isPrime (n:Int) ->  Bool {
    if n < 2 { return false }

    generatePrimes(to: sqrt(Double(n)).round(.towardZero))

Та же проблема с .squareRoot

Как мне сгенерировать: Int здесь?

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Сообщение об ошибке вводит в заблуждение. Double не имеет round(_ rule:) метода. Что вы, вероятно, имели в виду rounded(_ rule:)

sqrt(Double(n)).rounded(.towardZero)

или

Double(n).squareRoot().rounded(.towardZero)

Но если вам нужен результат в виде целого числа, то это просто

Int(Double(n).squareRoot())

потому что преобразование из Double в Int уже усекает результат к нулю.

0 голосов
/ 30 июня 2018

Если вы хотите вызвать generatePrimes с двойным

generatePrimes(to: floor(sqrt(Double(n)))

или если вы хотите позвонить с Int

generatePrimes(to: Int(floor(sqrt(Double(n))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...