91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

考拉茲猜想的變體

發布時間:2020-06-24 13:15:13 來源:網絡 閱讀:562 作者:stlf2004 欄目:編程語言

“考拉茲猜想”是一個數學上的未解之謎。

考拉茲猜想
對自然數 n 循環執行如下操作。

  • n 是偶數時,用 n 除以 2
  • n 是奇數時,用 n 乘以 3 后加 1
    如此循環操作的話,無論初始值是什么數字,最終都會得到 1(會進入1 → 4 → 2 → 1 這個循環)。

這里我們稍微修改一下這個猜想的內容,即假設初始值為偶數時,也用 n 乘以 3 后加 1,但只是在第一次這樣操作,后面的循環操作不變。而我們要考慮的則是在這個條件下最終又能回到初始值的數。
譬如,以2為初始值,則計算過程如下。
2?→?7?→?22?→?11?→?34?→?17?→?52?→?26?→?13?→?40?→?20?→?10?→?5?→ 16?→?8?→?4?→?2
同樣,如果初始值為4,則計算過程如下。
4?→?13?→?40?→?20?→?10?→?5?→?16?→8?→?4
但如果初始值為6,則計算過程如下,并不能回到初始值6。
6?→?19?→?58?→?29?→?88?→?44?→?22?→?11?→?34?→?17?→?52?→?26?→?13 →40?→?20?→?10?→?5?→?16?→?8?→?4?→?2?→?1?→?4?→?…


問題
求在小于 10000 的偶數中,像上述的 2 或者 4 這樣“能回到初始值的數”有多少個。


package main

import "fmt"

func collatz(n int)bool{
    m := n * 3 + 1
    for{
        if m == 1{
            return false
        }else if m == n{
            return true
        }

        if m % 2 == 1{
            m = m * 3 + 1
        }else if m % 2 == 0{
            m = m / 2
        }
    }
}

func main(){
    var s []int
    for i:=2;i<10001;i+=2{
        if collatz(i){
            s = append(s, i)
        }
    }
    fmt.Println(s)
    fmt.Printf("共 %d 個數\n", len(s))
}

結果:

[2 4 8 10 14 16 20 22 26 40 44 52 106 184 206 244 274 322 526 650 668 790 866 976 1154 1300 1438 1732 1780 1822 2308 2734 3238 7288]
共 34 個數

本來用遞歸函數,發現有些麻煩,就用了for循環,發現很容易就搞定了,只需注意跳出循環的條件設計就好。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普格县| 泗洪县| 克什克腾旗| 岳阳市| 武宣县| 阿瓦提县| 扶风县| 汝阳县| 无棣县| 南召县| 宝兴县| 德令哈市| 鄂托克前旗| 饶阳县| 泗水县| 东宁县| 新巴尔虎左旗| 缙云县| 乳山市| 商都县| 保德县| 四川省| 兴业县| 赞皇县| 沈丘县| 星子县| 郴州市| 梅河口市| 通城县| 大连市| 娄底市| 晋城| 资溪县| 麻江县| 双江| 河间市| 象山县| 丰镇市| 台北市| 沾益县| 昌江|