Форум сайта python.su
Ребят вот написал функцию, реализующую данный алгоритм:
#решето Эратосфена
def Eratos(resheto,n):
j=0
p=resheto[j]
while n>p**2:
for i in resheto:
if i>2*p and i%p== 0:
resheto.remove(i)
j+=1
p=resheto[j]
return resheto
n=input('Input high number:')
resheto=[i for i in range(2,n) ]
resheto=Eratos(resheto,n)
print resheto
Отредактировано (Окт. 7, 2010 10:16:27)
Офлайн
>>> n = 2
>>> for i in range(3):
... for j in list(range(20))[n ** 2:]:
... print(j, end=' ')
... n += 1
... else:
... print()
...
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 9 10 11 12 13 14 15 16 17 18 19 16 17 18 19
>>>
Отредактировано (Окт. 7, 2010 11:14:15)
Офлайн
guranvirПопинать мы всегда готовы :)
Если можно посмотрите и попинайте, при чем последнее решительно приветствуется :)
Офлайн
и вновь начинается поиск максимального простого числа :) где то я уже встречал использование такой штуки :) к примеру перемножения 2х простых чисел :)
Офлайн
sypper-pitа разве решето - это не массив простых делителей? или уже слишком поздно и мне пора спать? :)
и вновь начинается поиск максимального простого числа
Офлайн
Ну решето это массив простых чисел:)
Офлайн
Спасибо за критику )
Офлайн
guranvirда, ночью сюда лучше не заходить :)
Ну решето это массив простых чисел
Офлайн
#решето Эратосфена
def Eratos(n):
resheto=[i for i in range(2,n) ]
print resheto
for j in xrange(0,len(resheto)):
p=resheto[j]
if p**2>n:
break
i=j+1
while i<len(resheto):
print resheto
print i
if resheto[i]%p==0:
resheto.remove(resheto[i])
i=i+1
return resheto
#/////////////////////////////////////////////////////////////
n=input('Input high number:')
resheto=Eratos(n)
print resheto
Отредактировано (Окт. 10, 2010 11:54:14)
Офлайн
1. resheto= выглядит странно. range(2, n) чем не устраивает? Если заботитесь о том, чтобы это работало в 3м питоне, то хотя бы list(range(2,n))
2. зачем в вызове xrange 0? Он и так с нуля считает.
3. i=j+1, while i<len(resheto):, i=i+1 можно заменить на for num in resheto
4. Почитайте PEP08 http://www.python.org/dev/peps/pep-0008/ и следуйте ему. Особо бросаются в глаза слепленые операторы и операнды. Если разделить их пробелами будет намного читабельнее. Например: 'p = resheto' читается гораздо лучше, чем 'p=resheto'
5. Я надеюсь, что print-ы внутри функции - это отладка. Если нет, то это плохо.
Офлайн