콜 라 즈 가 추측 한 변형
2101 단어 알고리즘go.콜 라 즈 는 추측 했다.
콜 라 즈 는 자연수 n 순환 에 대해 다음 과 같은 조작 을 수행 할 것 이 라 고 추측 했다.
여기 서 우 리 는 이 추측 내용 을 약간 수정 합 니 다. 즉, 초기 값 이 짝수 라 고 가정 할 때 n 곱 하기 3 에 1 을 추가 하지만 처음 이렇게 조작 할 뿐 뒤의 순환 작업 은 변 하지 않 습 니 다.우리 가 고려 해 야 할 것 은 이 조건 에서 결국 초기 값 으로 돌아 갈 수 있 는 수 이다.예 를 들 어 2 를 초기 값 으로 하면 계산 과정 은 다음 과 같다.2 건 → 곤 7 건 → → 곤 22 건 → 곤 11 건 → 곤 11 건 → 곤 34 건 → 곤 17 건 → 곤 17 건 → 곤 52 건 → 곤 52 건 → 곤 26 건 → 곤 13 건 → 곤 13 건 → 곤 13 건 → 곤 40 건 → 곤 40 건 → 곤 20 건 → 곤 20 건 → 곤 20 건 → 곤 10 건 → 곤 13 건 13 건 → 곤 13 → 곤 13 건 → 곤 40 건 → 곤 40 건 → 곤 20 건 → 곤 20 건 → 곤 10 건 → 곤 5 건 5 건 → 곤 5 건 5 건 5 건 → 곤 5 건 5 건 → 곤 곤 20 건 → 곤 20 건 → 곤 20 건 → 곤 20 건 → 곤 10 건 → 곤 10 건 → 곤 곤 5 건 5 건 5 건 5 건 → 곤 곤 5 건 → 곤 곤 곤 곤 20 건 → → 곤 20 건 → 곤 20 건 → 곤 20 건 → → → 곤 20 건 → → → 16 → 8 → 4 → 2 와 마찬가지 로 초기 값 이 4 라면 계산 과정 은 다음 과 같다.4 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 그러나 초기 값 이 6 이면 계산 과정 은 다음 과 같 고 초기 값 6 으로 돌아 갈 수 없다.6 → 19 → 58 → 29 → 88 → 44 → 22 → 11 → 34 → 17 → 52 → 26 → 13 →40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → 4 → …
문 제 는 10000 이하 의 짝수 중에서 상기 2 또는 4 와 같이 '초기 값 으로 돌아 갈 수 있 는 수' 가 몇 개 있 는 지 를 요구한다.
package main
import "fmt"
func collatz(n int)bool{
m := n * 3 + 1
for{
if m == 1{
return false
}else if m == n{
return true
}
if m % 2 == 1{
m = m * 3 + 1
}else if m % 2 == 0{
m = m / 2
}
}
}
func main(){
var s []int
for i:=2;i<10001;i+=2{
if collatz(i){
s = append(s, i)
}
}
fmt.Println(s)
fmt.Printf(" %d
", len(s))
}
결과:
[2 4 8 10 14 16 20 22 26 40 44 52 106 184 206 244 274 322 526 650 668 790 866 976 1154 1300 1438 1732 1780 1822 2308 2734 3238 7288]
34
원래 재 귀 함수 로 귀 찮 은 것 을 발견 하고 for 순환 을 사 용 했 는데 쉽게 해결 되 었 습 니 다. 순환 하 는 조건 디자인 에 만 주의 하면 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.