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

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

素數指示器將巨大的非素數指示為素數

素數指示器將巨大的非素數指示為素數

慕萊塢森 2023-06-27 16:09:24
def main():    try:        a = int(input())        if isinstance(a, int):            a = int(a)            if a ==2:                print('YES')            if a > 1:                for i in range(2, a):                    if a % i == 0:                        print('NO')                        break                    else:                        print('YES')                        break            else:                print('NO')        else:            print('NO')    except EOFError:        print('NO')    except ValueError:        print('NO')main()這段代碼可以工作,但它正在計算巨大的數字作為素數,例如 3456734572525。它在 5 個測試用例中的 4 個測試用例中是成功的。首先我認為它在 0 或十進制數字上失敗,但事實并非如此。
查看完整描述

3 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

for 循環永遠不會運行到最后,因為無論a % i == 0您是否會打破循環。您應該將您的代碼移到print("YES")循環之外并使用return代替break來確保您的函數在循環中斷時不會運行此代碼。嘗試這個:


def main():

    try:

        a = int(input())

        if isinstance(a, int):

            a = int(a)

            if a ==2:

                print('YES')

            if a > 1:

                for i in range(2, a):

                    if a % i == 0:

                        print('NO')

                        return

                print('YES')

                return

            else:

                print('NO')

        else:

            print('NO')

    except EOFError:

        print('NO')

    except ValueError:

        print('NO')

main()


查看完整回答
反對 回復 2023-06-27
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

您的代碼實際上從一開始就是不正確的。

在一次“if”檢查之后,您在循環內使用“break”,所以基本上您只檢查一次。所以你的代碼所做的就是判斷這個數字是否能被 2 整除。


try:

    a = int(input())

    flag = 0

    if isinstance(a, int):

        a = int(a)

        if a==1:

            print('Neither')

        elif a ==2:

            print('YES')

        else:

            for i in range(2, a):

                if a % i == 0:

                    flag=1

                    break

    else:

        print('NO')

except EOFError:

    print('NO')

except ValueError:

    print('NO')

if flag:

    print('NO')

else:

    print('YES')


查看完整回答
反對 回復 2023-06-27
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

你在第一次運行時打破了循環,

假設你把 9 放進去,想想它

會失敗 == 2 條件

,然后達到 % i ==0 條件,并且 9%2 = 1,它會返回是


除此之外,該程序還有很多錯誤,但主要問題是在第一次運行后中斷,這沒有任何意義,如果您刪除了中斷并在 else 上打印 if a%i==0 它將起作用,但是您可以在那里進行許多優化。

查看完整回答
反對 回復 2023-06-27
  • 3 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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