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
この記事が気に入ったらサポートをしてみませんか?