Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 20, 2012 03:58:22

baa
От:
Зарегистрирован: 2011-11-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение простое число или нет

agalen
Диапазон можно уменьшить: вместо
xrange(3, int(x**0.5) + 1, 2)
достаточно
xrange(3, int(math.sqrt(x)), 2)
в общем да убрал, ой нет 9 не проходит, вернул в зад



Отредактировано (Янв. 20, 2012 04:07:51)

Офлайн

#2 Апрель 3, 2018 16:07:32

kamaz70rus
Зарегистрирован: 2018-04-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение простое число или нет

Всем здравствуйте!
Решая задачку о проверке числа на простое оно или нет, получилось следующее:

 def isPrime(n):
    n = int(n)
    if n == 2:
        return True
    if n % 2 == 0:
        return 2
    i = 3
    while i * i < n and n % i != 0:
        i += 2
    if i * i > n:
        return True
    else:
        return i
print(
    """
    Программа проверяет - является ли число, введенное пользователем простым числом.
    Простое число - это число, которое делится только на 1 и самого себя.
    Давайте проверим ваше число.
    Если хотете выйти, нажмите Enter.
    """ )
print("\nПроверим является ли число простым...")
number = input("\nВведите число целое положительное число > 1: ")
while int(number) <= 1:
    input("\nВведенное не больше 1. Повторите ввод: ")
if isPrime(number) == 2:
    print("\nЧисло не является простым, наименьший делитель:", isPrime(number))
if isPrime(number) == True:
    print("\nЧисло", number, "-является простым.")
if isPrime(number) != True:
    print("\nЧисло не является простым, наименьший делитель:", isPrime(number))
input("\n\nНажмите Enter чтобы выйти...")
Так как я в начале пути сего занимательного процесса, то пока меня и это устраивает. Вот только вопрос, как сделать проверку на то, что в input-е действительно числа, а не др. символы? Т.к. при вводе не чисел ф-ция int конечно же выдает ошибку. А до ошибок и исключений мне пока еще далековато.
Заранее благодарю за потраченное на меня время.

Офлайн

#3 Апрель 3, 2018 17:48:34

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Определение простое число или нет

Пример

 >>> "123".isdigit()
True
>>> "123q".isdigit()
False



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Апрель 4, 2018 19:45:41

kamaz70rus
Зарегистрирован: 2018-04-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение простое число или нет

JOHN_16
Пример
>>> “123”.isdigit()
True
>>> “123q”.isdigit()
False
Спасибо, но чисто теоретически все это можно и своими силами… Конечно код вырастет в объеме… но я то спросил не ради того чтобы новую ф-цию узнать (для этого есть python.org). Я понимаю что незачем разводить танцы с бубном, если all inclusive. Но понять - как вода, можно только самому зайдя в воду.

Отредактировано kamaz70rus (Апрель 4, 2018 19:47:20)

Офлайн

#5 Апрель 5, 2018 01:27:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Определение простое число или нет

kamaz70rus
Вот только вопрос, как сделать проверку на то, что в input-е действительно числа, а не др. символы?
kamaz70rus
  
print("\nПроверим является ли число простым...")
number = input("\nВведите число целое положительное число > 1: ")
while int(number) <= 1:
    input("\nВведенное не больше 1. Повторите ввод: ")
Весь этот фрагмент кода алгоритмически неправильный. Должен быть только один input() и цикл его должен повторять, пока не будет введена подходящая строка. Так что подумай, составь заново этот участок алгоритма и перепиши код для него. Проверка на число при вводе может быть сложнее, чем просто проверка на одни цифры. Ввод числа можно вообще сделать отдельной функцией, которая на выходе выдаёт число, подходящее для определение его простоты.



Отредактировано py.user.next (Апрель 5, 2018 01:29:14)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version