Программа, которая проверяет, является ли число простым числом

Здравствуйте, я создал эту программу, чтобы проверить, является ли число простым числом. Это работает, но почему-то говорит, что 999 - простое число. Где моя ошибка Было бы здорово, если бы кто-то объяснил. Благодарю вас!

Вот моя программа:

number = raw_input('Enter a Number: ')
nnumber = int(number)
prime_range = range(2, nnumber)

for x in prime_range:

    if nnumber % x == 0:
        print 'Not a Prime Number!'
        break

    else:
        print 'Prime Number!'
        break

5 ответов

Решение

Проследи это. x начинается с 2потом тесты 999 % 2; это 1, так else выполняется "Простое число!" печатается, и цикл прерывается. Программа заканчивается.

Вместо этого вам нужно напечатать "Простое число!" только когда вы проверили все возможности для x, Самый простой способ сделать это - сделать отступ else: (и удалить break там):

for x in prime_range:

    if nnumber % x == 0:
        print 'Not a Prime Number!'
        break

else:
    print 'Prime Number!'

Python выполняется else из for когда for завершает без разрыва: именно то, что вы хотите.

Если число простое, это означает, что никакое число не делит его равномерно, кроме 1 и самого себя. Это означает, что вам нужно проверить каждое число под ним, прежде чем вы сможете сказать, что число простое.

В вашем коде вы выходите из цикла на первой итерации - независимо от того, насколько велико число.

Суждение имеет проблему, может быть только 1, или простое число делится само по себе. Вы судите, только 2 из целого не является простым числом, вы должны использовать двойной цикл, чтобы выполнить условия суждения

Ваш существующий код проверяет только каждый раз, если введенное вами число делится на 2, а затем выходит из цикла, в зависимости от способа. Вы должны проверить все значения ниже и выйти, только если он обнаружит, что это НЕ простое число:

number = raw_input('Enter a Number: ')
nnumber = int(number)
prime_range = range(2, nnumber)

prime = True

for x in prime_range:
    if nnumber % x == 0:
        prime = False
        break

if prime:
    print 'Prime Number!'
else:
    print 'Not a Prime Number!'

Вы проверяете только для 1-й итерации. Независимо от того, является ли он простым или нет, он выходит из цикла, поскольку один из разделов, т. Е. "If" или "else", будет выполняться, вызывая разрыв цикла. Логика заключалась бы в проверке всего диапазона чисел от 2 до (число /2), и если он делит число в некоторой точке, он не будет простым числом. Если цикл завершается после итерации по всему циклу, то это простое число. Надеюсь, вы сможете сделать это сейчас. Спасибо!.

Другие вопросы по тегам