Пытаюсь освоить программирование, но получается очень плохо. Проверьте, пожалуйста, программу и укажите на ошибки
Вот задача
Назовём натуральное число подходящим, если у него ровно 3 различных простых делителя. Например, число 180 подходящее (его простые делители — 2, 3 и 5), а число 12 — нет (у него только два различных простых делителя). Определите количество подходящих чисел, принадлежащих отрезку [50 001; 90 000], а также наименьшее из таких чисел. В ответе запишите два целых числа: сначала количество, затем наименьшее число.
Вот программа (Питон):
for i in range (50001, 90001):
numDel=0
for j in range (2,i):
for l in range (2,j):
if l!=j and j%l!=0:
d=j
if i!=d and i%d==0:
numDel=numDel+1
if numDel==3:
print(i)
Answers & Comments
Ответ:
Для контроля работы программы можно раскомментарить строку
print(gDel, i, s)
Объяснение:
так будет попроще:
# функция определения простого числа.
# Если простое - True, иначе -False
def isprime(i):
k=2
while k*k<=i and i%k!=0:
k+=1
return (k*k > i)
fmin=0
gDel=0
for i in range (50001, 90001):
numDel=0
s=' делители:'
for j in range (2, round(i/2)):
if i%j==0 and isprime(j):
numDel+=1
s+=' ' + str(j)
if numDel==3:
if fmin==0: fmin=i
gDel+=1
# print(gDel, i, s)
print(gDel, fmin)