Written by
Amy
on September 11, 2017
간단한 알고리즘 구현하기
01. Collatz의 추측 함수 만들기
Collatz 추측 : 입력된 수가 짝수면 2로 나누고, 홀수면 3으로 곱한 뒤 1을 더한다. 결과로 나온 수에 같은 작업을 반복하여 결과값이 1이 될 때까지 반복하면 모든 수는 결국 1이 된다. 입력된 수가 1이 될 때까지 몇 회 걸리는지를 구하고, 500회가 넘어가면 -1을 return 한다.
func collatz ( input : Int ) -> Int {
var i : Int = input
var count : Int = 0
while i > 1 {
if count <= 500 {
if i % 2 == 0 {
i /= 2
count += 1
} else if i % 2 != 0 {
i = i * 3 + 1
count += 1
}
} else if count > 500 {
i = 0
count = - 1
}
}
return count
}
02. Harshad 수 만들기
Harshad의 수 : 양의정수 n이 Harshad의 수이려면, 각 자릿수의 합으로 n이 나누어져야 한다.
func harshad ( number : Int ) -> Bool {
var returnValue : Bool = true
var num : Int = number
var totalNum = 0
while num > 0 {
totalNum += num % 10
num = num / 10
}
if number % totalNum == 0 {
returnValue = true
} else if number % totalNum != 0 {
returnValue = false
}
return returnValue
}
03. 황금 비율, Golden ratio
let depth = 20 //임의의 정수
func goldenRatio ( depth : Int ) -> Double {
if depth == 0 {
return 1.0
}
else {
return 1.0 + 1.0 / goldenRatio ( depth : depth - 1 )
}
}
phi = goldenRatio ( depth : depth )