@Timerline

Что не так с программой?

Программа должна по задумке найти все простые числа от 0 до 1000, однако она все равно включает в список элементы которые не являются простыми. Пример: 27, 121

Программа:

list =[]
for t in range(1,1000):
	if not t%2==0:
		list.append(t)
for n in list:
	for l in range(1,1000):
		if n%l==0 and not n==l and not l==1:
			list.remove(n)
			break
list.remove(1)
print (list)
  • Вопрос задан
  • 100 просмотров
Решения вопроса 2
mayton2019
@mayton2019
Bigdata Engineer
Когда удаляешь из массива - то нумерация элементов справа - сдвигается. Вообще здесь массив не нужен.
Ответ написан
Комментировать
@Timerline Автор вопроса
Программу таки смог написать, через список. (Просто я по другому пока что не умею) Если кому интересно то вот она:
list=[]
v=0
for t in range(1,1001):
	for n in range(1,1001):
		if not t%n==0 and not n==1 and not n==t:
			v+=1
	if v==998:
		list.append(t)
	v=0
print(list)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@KR1PP
что такое простое число? это число, делители которого 1 и само число.

def divs(x):
    res = set()
    for i in range(1, int(x ** 0.5) + 1):
        if x % i == 0:
            res.add(i)
            res.add(x // i)
    if len(res) == 2:
        return sorted(list(res))
    else:
        return 0


k = 0
for x in range(0, 1001):
    if divs(x) != 0:
        k += 1
print(k)


в функции divs(x) мы ищем все делители числа и добавляем их в множество. потом проверяем если длина множества равна 2, то значит число нам подходит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы