見出し画像

prologによるコラッツ予想

偶数なら2で割る。

奇数なら3をかけて、1を足す。

いずれ1になる。

calc_coll(N) :-
   calc_coll_aux(N),
   !.
calc_coll_aux(1) :-
   !.
calc_coll_aux(N) :-
   S is N mod 2,
   (S=:=0,M is N'//'2;M is N*3+1),
   write(N),
   write(:),
   write(M),
   nl,
   calc_coll_aux(M).

例:

| ?-calc_coll(3).
3:10
10:5
5:16
16:8
8:4
4:2
2:1
yes
| ?-calc_coll(2).
2:1
yes
| ?-calc_coll(5).
5:16
16:8
8:4
4:2
2:1
yes
| ?-calc_coll(7).
7:22
22:11
11:34
34:17
17:52
52:26
26:13
13:40
40:20
20:10
10:5
5:16
16:8
8:4
4:2
2:1


※2021年7月7日にコラッツ予想に対して懸賞金(1億2000万円)がかけられた。https://www.itmedia.co.jp/business/articles/2107/07/news136.html

この記事が気に入ったらサポートをしてみませんか?