簡體   English   中英

一個應該找出一個數字是否為質數的程序沒有按預期工作

[英]A program that's supposed to find out whether a number is prime or not isn't working as expected

我正在嘗試制作一個程序,該程序將使用一個非常簡單的公式來確定一個數字是否為質數:將數字(x)除以 4。看看從 1 到 x/4 的任何數字是否可以完美地除以 x。 如果不是,x 將是質數。

該程序當前向我顯示了將 x 除以從 1 到 x/4 的每個數字的結果。 我想這樣做:如果有一個數字可以完美划分,打印 x 不是質數並結束程序。 或者如果沒有除以 x 的數字,只需說 x 是素數並結束程序。

我嘗試使用布爾值,但隨后它將每個數字都顯示為素數,這是不應該的,因為程序還不知道 x 可以完美地除以 1 但仍然是素數。

value = int(input("Type a number: "))

# prime = True

if value.__class__ == int:
    x = value / 4
    list = list(range(1, int(x) + 1))
    for number in list:
        y = value / number

        while y >= 0:
            y -= 1
            if y == 0:
                print(f"{value} is not prime")
                # print("yes")
                # y == -1
            elif 0 < y < 1:
                print(f"{value} is prime")
                # print("no")
    # if prime:
    #     print(f"{value} is prime")
    # else:
    #     print(f"{value} is not prime")

你的第一個邏輯是錯誤的。 你需要檢查math.sqrt(x)

>>> import math
>>> [a/4 < math.sqrt(a) for a in range(100)]
[False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]

從技術上講,這將超出x=15但是您將檢查比您需要的更多的數字您可以通過查看圖表來看到這一點https://www.desmos.com/calculator/dybweqs6lk

首先你在哪里找到這個公式?

其次,您沒有實現您在代碼中所說的內容。 你需要在划分后檢查所有可能的四種並根據它們選擇結果,而不是在任何循環中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM