В заявлении говорится:Простые числа меньше или равно п
Написать функцию
era1()
которая запрашивает у пользователя числоn
, а затем использовать этот алгоритм, чтобы напечатать все простые числа меньше или равноn
.Алгоритм:
- Написать список с номерами от 2 до наибольшего целого числа N вы хотите вычислить.
- Первое число в списке - простое число. Напишите это число в списке простых чисел,
B
.- Удалить из списка
A
, первый элемент и его кратность.- Если первое число в списке
A
меньше квадратного корня N, вернитесь ко второй точке.- Номера в списке
B
и те, что остались в спискеA
, являются обычными.
Теперь я ставлю этот код:
import math
def primo(num):
if num < 2:
return False
i = 2
for i in range(2, int(math.sqrt(num) + 1)):
if (num % i == 0):
return False
return True
def main():
n = input("Introdueix un nombre: ")
B = range(2, n)
for i in B:
if primo(i):
print i
main()
def era1():
n = input("Introdueix un nombre: ")
A = range(2, n + 1)
B = [A[0]]
for i in A:
if i % 2 == 0:
A.remove(i)
if A[0] < math.sqrt(n):
print B + A
era1()
Результат неверен, потому что если я удалить один из входных данных, появляется ошибка, и я должен поставить только один раз вход. Также результат неверен, потому что A + B
, список B
не является списком функций main, а конечным результатом являются только числа, не кратные 2 и 2. Как я могу поместить только один вход, а затем окончательный результат будет правильным?