Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна помощь в решении задачи

дмитрий Знаток (268), на голосовании 1 месяц назад
Подвиг 3. На вход программе подается натуральное число n. Необходимо его прочитать и найти все простые числа (нацело делятся только на 1 и на себя), которые меньше числа n, то есть, в диапазоне [2; n). Результат вывести на экран в строчку через пробел. Ликбез: квадратная скобка - граница включается; круглая скобка - граница исключается. Например [2; n) - диапазон от 2 до n-1 целых чисел.

n = int(input())
n1 = []
for i in range(2, n):
for j in range(2, i+1):
if j == 2 or j == 3 or j == 5 or j == 7:
n1.append(j)
if j % 2 != 0 and j % 3 != 0 and j % 5 != 0 and j % 7 != 0:
n1.append(j)

n1 = list(set(n1))
print(*n1)

На вводе 256 решение перестает работать.

Ответы:
test #1
input: 11
output: 2 3 5 7

test #2
input: 15
output: 2 3 5 7 11 13

test #3
input: 3
output: 2

test #4
input: 6
output: 2 3 5

test #5
input: 256
output: 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 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251
Голосование за лучший ответ
Celtic Hammer Мудрец (16791) 2 месяца назад
Простое решение данной задачи перебором делителей
 def f(x, i = 2,test = True): 
while i <= x ** .5:
if not x % i:
test = False
break
i += 1
return test

n = int(input())
for k in range(1,n):
if f(k):
print(k, end=' ')
Вводим 100, получаем
1 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
Ксения РайтВысший разум (104234) 2 месяца назад
С каких это пор 1 - простое число? Надо выводить список Primes в диапазоне (1;n), a не [1;n). В общем так будет правильно:
 for k in range(2,n): 
А ускорить можно ситом Эратосфена:
 from math import isqrt 
n, Prime = int(input("n » ")), []
Num = [True for k in range(n + 1)]
Num[0] = Num[1] = False
for k in range(2, isqrt(n) + 1):
if Num[k]:
for l in range(2, n // k + 1): Num[l * k] = False
for i in range(n):
if Num[i]: Prime.append(i)
print(*Prime)
если это вообще уместно, как уместно было бы для n, равным, скажем, миллиону или более того, но я не уверена что Автору вопроса это необходимо...
Похожие вопросы