Загрузка...

Python задача - "Числа ученого Эрастофена"

Тема в разделе Python создана пользователем hotabuchic 23 фев 2020. 572 просмотра

  1. hotabuchic
    hotabuchic Автор темы 23 фев 2020 0 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 23 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Так тут же думать даже не надо, весь алгоритм написан, поколение егэ совсем отупело?
     
  3. KaByH_Alive
    KaByH_Alive 23 фев 2020 Заблокирован(а) 126 1 дек 2019
    Жаль, что симпу поставить не могу. Я когда профильный матан сдавал, всегда обращал внимание на подобные детали в заданиях
     
  4. sesu
    sesu 23 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Насколько я знаю матан не преподают в школах
     
  5. KaByH_Alive
    KaByH_Alive 23 фев 2020 Заблокирован(а) 126 1 дек 2019
    Алгебру:2011_tiDebil:
     
  6. hotabuchic
    hotabuchic Автор темы 23 фев 2020 0 2 мар 2018
    чел ну помоги дописать код тип я код написал но хз написать цикл который будет проверять 4 пункт задачи)))
    --- Сообщение объединено с предыдущим 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 23 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Ты как то шаблонно мыслишь, тебе нужен вайл тру и ты делаешь брейк когда не осталось чисел которые больше i.
     
  8. hotabuchic
    hotabuchic Автор темы 23 фев 2020 0 2 мар 2018
    [IMG]
    --- Сообщение объединено с предыдущим 23 фев 2020
    [IMG]
    --- Сообщение объединено с предыдущим 23 фев 2020
    вроде сделал
     
  9. sesu
    sesu 23 фев 2020 Ты не умеешь писать код 114 17 ноя 2019
    Плохое решение, тебе тут вообще по сути циклы не нужны
     
  10. hotabuchic
    hotabuchic Автор темы 23 фев 2020 0 2 мар 2018
    ну мне лень было долго думать что бы сделать норм код, просто у меня еще куча задач
     
Загрузка...
Top