Используйте python, чтобы проверить, является ли это число простым или нет? - PullRequest
0 голосов
/ 26 марта 2020

Я получил шестнадцатеричное значение

number = C847923CE24DE8B7CA66AB9620BAF1831FE65EA0D9A2928D6D75B12C567F6C2586ED07AE0EE5C8ECD8793F1683AF1893C0BE521A10F69E6DC951DC7E2CB47E8B  

Это должно быть равно

10489492484628552513045989867681469503774243086255660470449316956846449417667713853937696810038768145686753348376338135274255531844743941964455973060116107

Я пробовал это https://www.programiz.com/python-programming/online-compiler/?ref=374cc95b

Но получил эта ошибка:

Traceback (последний вызов был последним): файл "", строка 4, в OverflowError: результат range () содержит слишком много элементов

Ответы [ 2 ]

3 голосов
/ 26 марта 2020

Если вы хорошо используете библиотеку, чтобы проверить, является ли число простым или нет (и ваши вопросы не о том, как написать эффективную простую проверку самостоятельно), как насчет следующего:

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

Относительно преобразования шестнадцатеричного числа в нормальное (основную десятку) число вы можете сделать:

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

Где второй аргумент - base от введенного числа.

0 голосов
/ 27 марта 2020

Но мне также нужен эффективный праймер для проверки моего кода: почему приведенный ниже код не может обрабатывать большие числа?

# 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")
...