亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中找到第 n 個回文素數

如何在 Go 中找到第 n 個回文素數

Go
小怪獸愛吃肉 2022-12-05 17:29:24
我是 Go 的新手,我試圖找到第 n 個回文素數,但它總是返回 0,我在這里做錯了什么,我的代碼輸出應該是 131。為了清楚起見,下面我將給出 n 的樣本及其返回值。n:1,輸出:2n:2,輸出:3n:3,輸出:5n:5,輸出:11n:6,輸出:101n:7,輸出:111n:8,輸出:151n := 7counter := 0currNum := 1palindromeNumber := 0for counter < int(n) {    currNum++    isPrime := false    for i := 2; i <= int(math.Sqrt(float64(currNum))); i++ {        if currNum%i == 0 {            isPrime = true            var number, remainder, temp int            var reverse int = 0            temp = currNum            // For Loop used in format of While Loop            for {                remainder = number % 10                reverse = reverse*10 + remainder                number /= 10                if number == 0 {                    // Break Statement used to exit from loop                    break                }            }            if temp == reverse {                palindromeNumber = reverse            }            break        }    }    if !isPrime {        counter++    }}return int64(palindromeNumber)
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

質數是只有 2 個因數的數:1 和它們本身,這意味著如果一個數是質數,則它不能被從到n范圍內的任何數整除。但是在你的代碼中,我看到2sqrt(n)


if currNum%i == 0 {

        isPrime = true

        ...

}

如果在從到的范圍內可以被 icurrNum整除,為什么它是素數?這是錯的。如果滿足這個條件,它必須是一個非素數。此外,我沒有看到 的賦值,因此它的零值也會使。i2sqrt(n)currNumvar number0palindromeNumber = 0


我認為您應該將素數檢查和回文檢查保留在兩個單獨的函數中,以避免代碼中出現混淆(例如func isPrime和func isPalindrome)。


查看完整回答
反對 回復 2022-12-05
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您的主要問題是變量number。你創建了它,也許你想在使用數字計算還原之前將 currNum 復制到數字中,但你沒有這樣做。



查看完整回答
反對 回復 2022-12-05
  • 2 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號