iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0

Day 11 - 用Kotlin解數學題:考拉茲猜想
今天我們會用我前面所教的,來解今天的數學題,順便統整一下,我希望今天能透過用程式寫數學題的方式,來幫大家複習,先講一下什麼是考拉茲猜想。

考拉茲猜想

考拉茲猜想適用於正整數,假設我們先有一個值n好了,當n是偶數時,就除以2,而當n為奇數時,就乘以3並加上1,
一直繼續跑下去,最終n就會等於1,這適用於任何正整數。

Kotlin程式

我們就直接解吧,這邊我們n值設13,並先打印出一次n,寫一個while迴圈,設當n不等於1時,就跑下面的程式,然後寫一個if,設若n是奇數就3n+1,其餘就是偶數,跑n/2,這樣我們就能用Kotlin程式看到考拉茲猜想的過程。
程式碼:

fun main() {
    var n = 13
    println(n)
    while(n!=1){
        if (n % 2 != 0){
            n = 3*n+1
            println(n)
        }else{
            n = n/2
            println(n)
        }
    }
    }

我前面也說過了,if是能夠用when能代換的,所以我這邊就也把when版本,也放出來,讓大家參考一下。
程式碼:

fun main() {
    var n = 13
    println(n)
    while(n!=1){
            when(n%2){
      1 -> {
          n = 3*n +1
          println(n)
      }
      0 -> {
          n = n/2
          println(n)
      }
    }
    }
}

複習

條件判斷

when(x){
    1 -> println(1)
}
if  (x == 1){
    println(1)
}

迴圈

for(i in 1..10){
    x = x + 1
    println(x)
}
while(x<10){
    x = x + 1
    println(x)
}

函式

fun hello(a:Int){
    println(a%2)
}

總結

希望我今天解的數學題,大家有看懂,如果大家有更好的想法,可以自己試著寫看看。


上一篇
Day 10 - Kotlin的函式
下一篇
Day12 - Kotlin的集合
系列文
來學習寫安卓手機的程式吧-Kotlin語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言