Как вы находите первые N простых чисел в Python? - PullRequest
0 голосов
/ 30 июня 2018

Я довольно новичок в python, поэтому я не совсем понимаю, как использовать циклы. В настоящее время я работаю над фрагментом кода, который должен найти первые N простых чисел. Результат, который желателен, если вы введете 5, он выдаст 2, 3, 5, 7 и 11, но независимо от того, что я введу для «max», выход всегда будет 2 и 3. Есть ли способ улучшить это?

max=int(input("How many prime numbers do you want: "))
min=2
while(min<=(max)):
  for c in range(2, min):
    if min%c==0:
      break
  else:
    print min
    min=min+1

Ответы [ 6 ]

0 голосов
/ 04 июня 2019

Попробуйте это:

n = int(input("First N prime number, N ? "))
p = [2]
c = 2

while len(p) < n:
    j = 0
    c += 1
    while j < len(p):
        if c % p[j] == 0:
            break
        elif j == len(p) - 1:
            p.append(c)
        j += 1
print(p)
0 голосов
/ 10 декабря 2018

Следующий код даст вам простые числа от 3 до N, где N - ввод от пользователя:

number = int(input("Prime numbers between 2, 3 and ")) 
for i in range(2,number):
    for j in range(2,int(i/2)+1):
        if i%j==0:
    break
        else:
            if j==int(i/2):
                print(i)

Вы можете проверить, чтобы число i было простым, вам нужно только проверить его делимость числами до n / 2.

0 голосов
/ 06 ноября 2018

Решение: получите n-ю запись простого числа. Перебирайте каждое натуральное число для простого числа и добавляйте простое число в список. Завершите работу программы, когда длина списка удовлетворяет введенному пользователем n-му простому номеру.

# Get the number of prime numbers entry.
try:
    enterNumber = int(input("List of nth prime numbers: "))
except:
    print("The entry MUST be an integer.")
    exit()
startNumber = 1
primeList = []
while True:
    # Check for the entry to greater than zero.
    if enterNumber <= 0:
        print("The entry MUST be greater than zero.")
        break
    # Check each number from 1 for prime unless prime number entry is satisfied.
    if startNumber > 1:
        for i in range(2,startNumber):
            if (startNumber % i) == 0:
                break
        else:
            primeList.append(startNumber)
    if (len(primeList) == enterNumber):
        print(primeList)
        break
    else:
        startNumber = startNumber + 1
        continue
0 голосов
/ 30 июня 2018
number = int(input("Prime numbers between 2 and "))
for num in range(2,number + 1):
       if num > 1:
            for i in range(2,num):
                if (num % i) == 0:
                     break
            else:
                print(num)
0 голосов
/ 30 июня 2018

Полагаю, это поможет, дайте мне знать.

number = int(input("How many prime numbers do you want ? "))

cnt = 0
for i in range (1, number+1):
    for j in range(1, i+1):
        if(i%j == 0):
            cnt += 1
    if(cnt == 2):
        print(i)
    cnt = 0
0 голосов
/ 30 июня 2018

Вы только увеличиваете min в блоке else, т. Е. Если min % c отлично от нуля для всех c, т. Е. Если min - простое число. Это означает, что код не сможет пройти мимо любых составных чисел. Вы можете исправить это, пометив min=min+1 один уровень так, чтобы он совпадал с for и else.

...