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

Я написал следующий код, который должен проверить, является ли введенный номер простым числом или нет, но есть проблема, с которой я не мог пройти:

def main(): n = input(«Please enter a number:») is_prime(n) def is_prime(a): x = True for i in (2, a): while x: if a%i == 0: x = False else: x = True if x: print «prime» else: print «not prime» main()

Если введенный номер не является простым числом, он отображает «не просто», как и предполагалось, но если число является простым числом, оно ничего не отображает. Не могли бы вы мне помочь?

ОТВЕТЫ

Ответ 1

Существует много эффективных способов проверки примитивности (и это не один из них). Но цикл, который вы написали, может быть кратко представлен в Python:

def is_prime(a): return all(a % i for i in xrange(2, a))

То есть, a является простым, если все числа между 2 и a (не включительно) дают ненулевой остаток при делении на a.

Ответ 2

На самом деле я не думаю, что в этих ответах найдено наилучшее решение, поэтому я собираюсь опубликовать свое сообщение и объяснить, почему это лучше:

Решето Эратосфена – алгоритм определения простых чисел. Решение задачи на Python


from math import sqrt; from itertools import count, islice def isPrime(n): return n > 1 and all(n%i for i in islice(count(2), int(sqrt(n)-1)))

Примечание: требуется проверка n > 1 , так как 1 не является простым числом, и поэтому равно нулю и любой отрицательное число.

Описание

Я собираюсь дать вам немного информации об этой почти эзотерической одиночной строке кода, которая будет проверять простые числа:

    Прежде всего, использование range() — действительно плохая идея, потому что он создаст список чисел, в котором используется много памяти. Использование xrange() лучше, потому что оно создает generator , который не использует память для работы, но генерирует каждое число «на лету». Кстати, это не лучшее решение: попытка вызвать xrange(n) для некоторого n таким образом, что n > 2 31 -1 (что является максимальным значением для C long) вызывает OverflowError . Поэтому лучший способ создать диапазон generator — использовать itertools :
Читайте также:
Что такое вектор в программе чертежник

xrange(2147483647+1) # OverflowError from itertools import count, islice count(1) # Count from 1 to infinity with step=+1 islice(count(1), 2147483648) # Count from 1 to 2^31 with step=+1 islice(count(1, 3), 2147483648) # Count from 1 to 3*2^31 with step=+3

    Найдем все делители n = 100 и перечислим их в таблице:

2 x 50 = 100 4 x 25 = 100 5 x 20 = 100 10 x 10 = 100 -> Square root of 100 20 x 5 = 100 25 x 4 = 100 50 x 2 = 100

Вы легко заметите, что после квадратного корня из n все найденные делители на самом деле уже найдены. Например, 20 уже был найден с помощью 100/5 . Квадратный корень из числа — это точная средняя линия, где найденные делители начинают дублироваться. Поэтому , чтобы проверить, является ли число простым, вам нужно всего лишь проверить от 2 до sqrt(n) .

for number in islice(count(10), 2): print number, # Will print: 10 11 for number in islice(count(1, 3), 10): print number, # Will print: 1 4 7 10 13 16 19 22 25 28
def all(iterable): for element in iterable: if not element: return False return True

Расширенная версия

Я включаю «распакованную» версию функции isPrime() , чтобы ее было легче понять и прочитать:

Проверка простоты числа перебором делителей. Решение задачи на Python


from math import sqrt from itertools import count, islice def isPrime(n): if n < 2: return False for number in islice(count(2), int(sqrt(n)-1)): if not n%number: return False return True

Ответ 3

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

import math def is_prime(n): if n == 2: return True if n % 2 == 0 or n

Ответ 4

Если a является простым, тогда while x: в вашем коде будет работать вечно, так как x останется True .

Так почему же это while ?

Я думаю, вы хотели закончить цикл for, когда нашли фактор, но не знали, как это сделать, поэтому вы добавили это, пока оно имеет условие. Итак, вот как вы это делаете:

Читайте также:
Пандион программа как работать

def is_prime(a): x = True for i in range(2, a): if a%i == 0: x = False break # ends the for loop # no else block because it does nothing . if x: print «prime» else: print «not prime»

Ответ 5

def prime(x): # check that number is greater that 1 if x > 1: for i in range(2, x + 1): # check that only x and 1 can evenly divide x if x % i == 0 and i != x and i != 1: return False else: return True else: return False # if number is negative

Ответ 6

def is_prime(x): n = 2 if x < n: return False else: while n < x: print n if x % n == 0: return False break n = n + 1 else: return True

Ответ 7

a = input(‘inter a number: ‘) s = 0 if a == 1: print a, ‘is a prime’ else : for i in range (2, a ): if a%i == 0: print a,’ is not a prime number’ s = ‘true’ break if s == 0 : print a,’ is a prime number’

он работал со мной просто отлично: D

Ответ 8

def isPrime(x): if x

print isPrime (2)
Правда
print isPrime (3)
Правда
print isPrime (9)
False

Источник: utyatnishna.ru

Как проверить простое ли число Python 3

Доброй ночи! Только начал обучение, и тут домашка которую я не могу сделать 6 часов) Домашка собственно звучит так «Написать функцию is_prime, принимающую 1 аргумент — число от 0 до 1000, и возвращающую True, если оно простое, и False — иначе.»

def is_prime(a): if a % a == 0 and a != 0: return True else: return False

a = int(input(«Enter a number: «)) print(is_prime(a))

Ответы (5 шт):

def is_prime(a): if a % 2 == 0: return a == 2 d = 3 while d * d a print(is_prime(int(input(«Enter a number: «))))
print( [ ‘<> — True’.format(i) for i in range(2, 1001) if is_prime(i)])

  • Простое число — натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя — единицу и самого себя.

Будем проходить по циклу до корня числа, ведь если мы не найдём делитель до корня данного числа, то дальше нет смысла искать, не найдём делители.

Читайте также:
Телевизор не видит программы

Вот работающий код:

def is_prime(a): if a < 2: return False for i in range(2, int(a ** 0.5 + 1)): if a % i == 0: return False else: return True print(is_prime(int(input())))

Вот моё решение:

def is_prime(x): for i in range(2, (x//2)+1): if x % i == 0: return False return True

Оно простое, лакониченое и оптимизированное. Цикл перебирает возможные делители числа от двойки до половины проверяемого числа, ибо проверять числа дальше просто нет смысла, так как любое лисло нацело делится максимум на половину себя.

Оптимизированный алгоритм поиска простых неотрицательных чисел:

  1. проверить на 0 и 1
  2. проверить на чётность и равенство 2 (исключается ~50% чисел)
  3. проверить на кратность 3 и равенство 3 (исключается ещё ~33% чисел)
  4. для проверки оставшихся чисел воспользоваться формулой 6n ± 1 (при n = 1, простыми будут 5 и 7, при n = 2: 11 и 13, и т.д.)
  5. как отмечено раньше, проверять делители следует до корня из заданного числа

def is_prime(num): prime = num > 1 and (num % 2 != 0 or num == 2) and (num % 3 != 0 or num == 3) i = 5; d = 2; while prime and i * i
print(*[ i for i in range(101) if is_prime(i)]) >> 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
def is_prime(number): for i in range(2, int(number ** 0.5) + 1): if number % i == 0: return False return True

Источник: husl.ru

Программа Python для печати простых чисел [With 8 Examples]

В этом руководстве по программированию на Python мы увидим Программа Python для печати простых чисел. Также мы увидим, как напечатать первые 10 простых чисел в Python, используя цикл while. Мы также увидим несколько примеров того, как печатать простые числа от 1 до 100 в Python, используя цикл while, и как напечатать первые n простых чисел в Python, используя цикл while.

Программа Python для печати простых чисел

Простое число — это натуральное число больше 1, которое не имеет положительных делителей, кроме 1 и самого себя. Вот полная программа для печати всех простых чисел в интервале.

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru