簡體   English   中英

使用 python 檢查這個數字是否是素數?

[英]Use python check if this number is a prime or not?

我有一個十六進制

number = C847923CE24DE8B7CA66AB9620BAF1831FE65EA0D9A2928D6D75B12C567F6C2586ED07AE0EE5C8ECD8793F1683AF1893C0BE521A10F69E6DC951DC7E2CB47E8B  

它應該等於

10489492484628552513045989867681469503774243086255660470449316956846449417667713853937696810038768145686753348376338135274255531844743941964455973060116107

我試過這個https://www.programiz.com/python-programming/online-compiler/?ref=374cc95b

但是得到了這個錯誤:

回溯(最近一次調用最后一次):文件“”,第 4 行,在溢出錯誤中:range() 結果有太多項目

如果您可以使用庫來檢查數字是否為質數(並且您的問題不是關於如何自己編寫有效的質數檢查器),那么以下內容如何:

>>> import sympy
>>> num = int('C847923CE24DE8B7CA66AB9620BAF1831FE65EA0D9A2928D6D75B12C567F6C2586ED07AE0EE5C8ECD8793F1683AF1893C0BE521A10F69E6DC951DC7E2CB47E8B', 16)
# 10489492484628552513045989867681469503774243086255660470449316956846449417667713853937696810038768145686753348376338135274255531844743941964455973060116107L
>>> sympy.isprime(num)
# False

關於將十六進制數轉換為普通(基數為十)數,您可以執行以下操作:

>>> int('A', 16)
10

其中第二個 arg 是輸入數字的base

但我還需要一個高效的代碼檢查器:為什么下面的代碼不能處理大數?

# Program to check if a number is prime or not

num = 407

# To take input from the user
#num = int(input("Enter a number: "))

# prime numbers are greater than 1
if num > 1:
# check for factors
for i in range(2,num):
   if (num % i) == 0:
       print(num,"is not a prime number")
       print(i,"times",num//i,"is",num)
       break
  else:
   print(num,"is a prime number")

  # if input number is less than
  # or equal to 1, it is not prime
  else:
     print(num,"is not a prime number")

暫無
暫無

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

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