// 任意の正の整数nに対して
//(Ⅰ) nが奇数ならば3倍して1を加える.
//(Ⅱ) nが偶数ならば2で割る.
//という操作を繰り返して,nが1になったら終了とする.
//1930年代にコラッツは,どんな正の整数から始めても上記の操作を繰り返せば1になると予想したが,
//この予想は証明も反証もできていない未解決問題となっている.(3n+1問題とも呼ばれる)
let n : BigInt = BigInt.random(digits: 10)//10桁の乱数を発生する
var result : BigInt = n
print("\(result)", terminator: " → ")
while result != BigInt(1) {
if result.isEven {
result = even(num: result)
}else{
result = odd(num: result)
}
print("\(result)", terminator: " → ")
}
func even(num : BigInt) -> BigInt {
return num / BigInt(2)
}
func odd(num : BigInt) -> BigInt {
return BigInt(3) * num + BigInt(1)
}
3301569911 → 9904709734 → 4952354867 → 14857064602 → 7428532301 → 22285596904 → 11142798452 → 5571399226 → 2785699613 → 8357098840 → 4178549420 → 2089274710 → 1044637355 → 3133912066 → 1566956033 → 4700868100 → 2350434050 → 1175217025 → 3525651076 → 1762825538 → 881412769 → 2644238308 → 1322119154 → 661059577 → 1983178732 → 991589366 → 495794683 → 1487384050 → 743692025 → 2231076076 → 1115538038 → 557769019 → 1673307058 → 836653529 → 2509960588 → 1254980294 → 627490147 → 1882470442 → 941235221 → 2823705664 → 1411852832 → 705926416 → 352963208 → 176481604 → 88240802 → 44120401 → 132361204 → 66180602 → 33090301 → 99270904 → 49635452 → 24817726 → 12408863 → 37226590 → 18613295 → 55839886 → 27919943 → 83759830 → 41879915 → 125639746 → 62819873 → 188459620 → 94229810 → 47114905 → 141344716 → 70672358 → 35336179 → 106008538 → 53004269 → 159012808 → 79506404 → 39753202 → 19876601 → 59629804 → 29814902 → 14907451 → 44722354 → 22361177 → 67083532 → 33541766 → 16770883 → 50312650 → 25156325 → 75468976 → 37734488 → 18867244 → 9433622 → 4716811 → 14150434 → 7075217 → 21225652 → 10612826 → 5306413 → 15919240 → 7959620 → 3979810 → 1989905 → 5969716 → 2984858 → 1492429 → 4477288 → 2238644 → 1119322 → 559661 → 1678984 → 839492 → 419746 → 209873 → 629620 → 314810 → 157405 → 472216 → 236108 → 118054 → 59027 → 177082 → 88541 → 265624 → 132812 → 66406 → 33203 → 99610 → 49805 → 149416 → 74708 → 37354 → 18677 → 56032 → 28016 → 14008 → 7004 → 3502 → 1751 → 5254 → 2627 → 7882 → 3941 → 11824 → 5912 → 2956 → 1478 → 739 → 2218 → 1109 → 3328 → 1664 → 832 → 416 → 208 → 104 → 52 → 26 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → Program ended with exit code: 0
