2016-05-17 2 views
0

Я сделал эту программу на Python 3, чтобы проверить, является ли число простым или нет.Как сделать эту программу поиска чисел в Python более полезной?

Программа следующим образом-

#Python program to check if the input number is prime or not 

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


    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") 
     else: 
      print(num,"is not a prime number") 

Теперь моя проблема заключается в том, что я не могу ввода экспоненциальные числа в этой программе. (Я имею в виду число в виде 2 ** 4 или 5 * 8).

Если я вход 2 ** 4 Я получаю output-

enter image description here

Как изменить свою программу для ввода показателей?

+1

с этим углублением я не считаю, что это даже компилирует. Кроме того, подсказка: любое число, написанное как экспоненциальное, конечно, не является простым! – apomene

+0

@apomene По экспоненте я имею в виду a^b форму .... – soham

+0

точно, такое число делится на a, поэтому, очевидно, не является простым – apomene

ответ

1
num = eval(input()) 

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

Вы также можете сэкономить много итераций с помощью:

for i in range(2,sqrt(num)+1): 
+0

Для чего стоит eval? – soham

+0

В принципе, он считает, что его строковый аргумент - это код на основе python, и поэтому оценивайте его так же, как и при вводе кода в интерпретаторе python. Это небезопасно, потому что злоумышленник может ввести код, который будет оцениваться без вашего контроля. – polku

+0

Я получаю sqrt не определено ... синтаксическая ошибка ... почему? – tatan

Смежные вопросы