SlideShare a Scribd company logo
1 of 11
Download to read offline
プログラマ脳を鍛える会
問題6(改造版)コラッツの予想
2016/08/26
・問題紹介 5分
・問題を解く 15分
・解答者 解説 5分
・解答開⽰ 5分
タイムスケジュール
⾃然数nについて
・nが偶数の場合、nを2で割る
・nが奇数の場合、nに3をかけて1を⾜す
という操作を繰り返す時、初期値がどんな数であっても
必ず1に到達する
-例
1→4→2→1
コラッツの予想
⾃然数nについて
・nが偶数の場合、nを2で割る
・nが奇数の場合、nに3をかけて1を⾜す
・初期値が偶数の場合、初回のみnに3をかけて1を⾜す
という操作を繰り返す時、最初のものになるものを考える
-例
2→7→22→11→34→17→52→26→13→40→20→10→5→
16→8→4→2
4→13→40→20→10→5→16→8→4
(改造版)コラッツの予想
しかし・・・
6で始めると
6→19→58→29→88→44→22→11→34→17→52→26→
13→40→20→10→5→16→8→4→2→1→4→・・・
となり、6に戻ってくることはない。
10,000以下の偶数のうち、前述の2や4のような「最初に戻
る数」がいくつあるかその個数を求めてください。
問題
10,000以下の偶数のうち、前述の2や4のような「最初に戻る数」が
いくつあるかその個数を求めてください。
⾃然数nについて
・nが偶数の場合、nを2で割る
・nが奇数の場合、nに3をかけて1を⾜す
・初期値が偶数の場合、初回のみnに3をかけて1を⾜す
という操作を繰り返す時、最初のものになるものを考える
-例
2→7→22→11→34→17→52→26→13→40→20→10→5→
16→8→4→2
4→13→40→20→10→5→16→8→4
問題
34個
解答
コラッツの予想では、「初期値がどんな数であって
も必ず1に到達する」とされています。今回の問題
でも、初回のみ変更しただけなので、最終的には同
じように到達すると予想できます。
そこで「1になるまで操作を繰り返して数字を変化
させ、最初の数に戻るかチェックする」というプロ
グラムを作成すれば良いということになります。
考え⽅
var count = 0;
for (var i=2 ; i<=10000 ; i = i+2){
var value = 9*i+4;
while(true){
value = calc(value);
if(value == 1){
break;
}
if(value == i){
count++;
break;
}
}
}
console.log(count);
function calc(val){
var result = 0;
if(val % 2 == 0){
result = val / 2;
}else{
result = 3 * val + 1;
}
return result;
}
javascriptの解答例
# ループしているかチェック
def is_loop(n)
# 最初は3をかけて1をたす
check = n * 3 + 1
# 1になるまで数字を変化させることを繰り返す
while check != 1 do
check = check.even? ? check / 2 : check * 3 + 1
return true if check == n
end
return false
end
# 2~10000まで、偶数についてチェックする
puts 2.step(10000, 2).count{|i|
is_loop(i)
}
Rubyでの解答例

More Related Content

Viewers also liked (8)

File 1389425159
File 1389425159File 1389425159
File 1389425159
 
Tipos de manteniento para una PC
Tipos de manteniento para una PCTipos de manteniento para una PC
Tipos de manteniento para una PC
 
Debate marielis
Debate marielisDebate marielis
Debate marielis
 
Dubai off plan projects
Dubai off plan projects Dubai off plan projects
Dubai off plan projects
 
Maker Checker -Incorporating Multiple Roles in Single SilkPerformer script
Maker Checker -Incorporating Multiple Roles in Single SilkPerformer scriptMaker Checker -Incorporating Multiple Roles in Single SilkPerformer script
Maker Checker -Incorporating Multiple Roles in Single SilkPerformer script
 
Dubai off plan properties
Dubai off plan propertiesDubai off plan properties
Dubai off plan properties
 
La filiacion
La filiacionLa filiacion
La filiacion
 
Confort, bienestar térmico y metabolismo (FADU, UNC)
Confort, bienestar térmico y metabolismo (FADU, UNC)Confort, bienestar térmico y metabolismo (FADU, UNC)
Confort, bienestar térmico y metabolismo (FADU, UNC)
 

プログラマ脳を鍛える会 Vol.6