Как включить алгоритм Сита Эратосфена, чтобы найти простые числа? - PullRequest
0 голосов
/ 24 февраля 2019

Для пояснения, это не то же самое, что и этот вопрос Сито Эратосфена - Поиск простых чисел Python , потому что я не хочу генерировать простые числа между двумя числами, но я хочу проверить, является ли числопростое число или нет.

Я сделал следующий код, чтобы узнать, является ли число простым числом или нет.Затем я услышал об алгоритме сита Эратосфена, который, по-видимому, работает быстрее, но я не знаю, как написать его в следующем коде?

number1 = int(raw_input("""
Enter any number :- """))
if number1 == 1:
    print "1 is a special case. It is neither a Prime Number nor a Normal Number. Be like 1"
if number1 == 2:
    print number1, "is a Prime Number"
if number1 == 4:
    print "4 is not a Prime Number"
    print "2 times 2 is 4"
if number1 > 1:
    for i in range(2,(number1//2)):
        if number1 % i == 0:
            print number1, "is not a Prime Number"
            print i, "times", (number1/i), "is", number1
            break
    else:
        print number1, "is a Prime Number"
else:
    print "Please type a positive number only"    

Не могли бы вы, ребята, помочь мне?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Сито Эратосфена - это метод получения простых чисел.Поэтому он заменит ваш код:

for i in range(2,(number1//2)):
    if number1 % i == 0:
        # handle non-prime

на

if number1 in previous_generated_primes:
    # handle non-prime
0 голосов
/ 24 февраля 2019

Я сделал это на repl.it.Я сделал так, чтобы каждый раз, когда я находил простое число, я сохранял это в списке.

При вычислении, является ли число простым, вместо того, чтобы проходить через все числа, ведущие к нему, я бы просматривал все числа в списке.

Это подражает тому, что бы вы сделали через сито эратастенов.

...