@killtech

Насколько ужасен мой алгоритм нахождения диапазона простых чисел?

Здравствуйте, извини за столь тривиальный вопрос.
Изучаю Python около недели, придумал для себя такую задачу "Найти все простые числа от 2 до n"
Где n - целое, положительное число, вводимое пользователем.
И написал следующий код:
x = int(input()) #Получаем число от пользователя
list_int = [i for i in range(2, (x + 1))] #Генерируем список от 2 до x
list_prime = is_prime(list_int)
print(list_prime)

def is_prime(list_int):
	list_prime = []
	list_div = [i for i in range(2, 10)] #Делители
	flag = True #Флаг определяющий отношение числа к простому
	for i in range(len(list_int)):
		for j in range(len(list_div)):
			if(list_int[i] % list_div[j] == 0 and list_int[i] != list_div[j]):
				flag = False
		if(flag == True):
			list_prime.append(list_int[i])
		else:
			flag = True
	return list_prime

Мой алгоритм сильно ужасен? Как можно было бы написать лучше?
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 1
longclaps
@longclaps
Ужасен как алгоритм и как код.
Для поиска простых чисел довольно давно придумано решето Эратосфена, вот простенькая реализация:
def primes(n):
    l = [True] * n
    l[:2] = [False, False]
    for i, a in enumerate(l):
        if a:
            for j in range(i * i, n, i):
                l[j] = False
    return [i for i, a in enumerate(l) if a]

print(primes(100))

зы А при чем тут генетические алгоритмы?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы