簡體   English   中英

這個 Prime 檢查器代碼有什么問題?

[英]What is the problem with this Prime checker code?

n=int(input("Enter required number: "))
for a in range(2,n):
    if n%a==0:
        print("Your number is not prime")
        break
    else:
        print("Your number is prime")
        break

它也將合數顯示為素數。

您的代碼只是檢查您的數字 n 是否可以被 2 整除,否則會認為 n 是素數,稍加改動您的代碼就可以工作:

n=int(input("Enter required number: "))

prime = True
for a in range(2, n // 2):
    if n%a==0:
        print("Your number is not prime")
        prime = False
        break

if prime:
    print("Your number is prime")

對於您要執行的操作:

from math import sqrt

n=int(input("Enter required number: "))

for j in range(2, int(sqrt(n))+1):
    if n % j == 0:
        print("Not prime")
        exit()
print("Number is prime")

會更好, 為什么我使用 sqrt

Enter required number: 10
Not prime

Enter required number: 20
Not prime

Enter required number: 17
Number is prime

你可以在這里使用any

if any( n%i==0 for i in range(2,int(n**0.5)+1) ):
    print("Not a prime number")
else:
    print("prime number")

暫無
暫無

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

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