Загрузка...

Python task - "Numbers of the scientist Erustofen"

Thread in Python created by hotabuchic Feb 23, 2020. 566 views

  1. hotabuchic
    hotabuchic Topic starter Feb 23, 2020 0 Mar 2, 2018
    В 235 году до н.э. греческий ученый Эратосфен изобрел следующий способ нахождения простых чисел на промежутке от 1 до заданного N:

    1. Выписать все целые числа 2,...,N.

    2. Зачеркнуть все числа, кратные i = 2 — первому простому числу.

    3. Найти первое незачёркнутое число в списке, большее чем i, и присвоить значению переменной i это число.

    4. Повторять шаги 2 и 3, пока это возможно.

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

    Напишите функцию eratosthenes(N), воспроизводящую данный алгоритм. Ваша функция должна через пробел печатать числа в том порядке, в котором их вычеркивает из списка оригинальный алгоритм. Например, если N = 10, то числа будут вычеркиваться в таком порядке: 4 6 8 10 9.

    Если для какого-то параметра никакие числа не вычеркиваются, просто не выводите ничего.

    Пример
    Ввод

    eratosthenes(15)

    Вывод

    4 6 8 10 12 14 9 15
     
  2. sesu
    sesu Feb 23, 2020 Ты не умеешь писать код 114 Nov 17, 2019
    Так тут же думать даже не надо, весь алгоритм написан, поколение егэ совсем отупело?
     
  3. KaByH_Alive
    KaByH_Alive Feb 23, 2020 Banned 126 Dec 1, 2019
    Жаль, что симпу поставить не могу. Я когда профильный матан сдавал, всегда обращал внимание на подобные детали в заданиях
     
  4. sesu
    sesu Feb 23, 2020 Ты не умеешь писать код 114 Nov 17, 2019
    Насколько я знаю матан не преподают в школах
     
  5. KaByH_Alive
    KaByH_Alive Feb 23, 2020 Banned 126 Dec 1, 2019
    Алгебру:2011_tiDebil:
     
  6. hotabuchic
    hotabuchic Topic starter Feb 23, 2020 0 Mar 2, 2018
    чел ну помоги дописать код тип я код написал но хз написать цикл который будет проверять 4 пункт задачи)))
    The post was merged to previous Feb 23, 2020
    def eratosthenes(N): start, i, final = [j for j in range(2, N + 1)], 2, [] for j in start: if j != i and j % i == 0: final.append(j) start.remove(j) for j in start: if j > i: i = j break for j in start: if j != i and j % i == 0: final.append(j) start.remove(j) print(*final)
     
  7. sesu
    sesu Feb 23, 2020 Ты не умеешь писать код 114 Nov 17, 2019
    Ты как то шаблонно мыслишь, тебе нужен вайл тру и ты делаешь брейк когда не осталось чисел которые больше i.
     
  8. hotabuchic
    hotabuchic Topic starter Feb 23, 2020 0 Mar 2, 2018
    [IMG]
    The post was merged to previous Feb 23, 2020
    [IMG]
    The post was merged to previous Feb 23, 2020
    вроде сделал
     
  9. sesu
    sesu Feb 23, 2020 Ты не умеешь писать код 114 Nov 17, 2019
    Плохое решение, тебе тут вообще по сути циклы не нужны
     
  10. hotabuchic
    hotabuchic Topic starter Feb 23, 2020 0 Mar 2, 2018
    ну мне лень было долго думать что бы сделать норм код, просто у меня еще куча задач
     
Loading...
Top