#python
#python
Вопрос:
Я ученик 9-го класса, который только что изучил некоторые базовые алгоритмы в псевдокоде и попытался решить проблему на python. Пример. мне потребовалось найти числа, которые имеют 3 делителя и меньше n. что мне делать? вывода нет
[1]: https://i.stack.imgur.com/a69tA.png ** сильный текст**
n=int(input("introduce a nr"))
x=1
k=0
d=1
for x in range(1,n 1):
for d in range(1,x 1):
if x % d==0:
k =1
d =1
if k==3:
print(x)
x =1
Комментарии:
1. Пожалуйста, укажите свой код в виде текста, а не изображений.
2. В чем смысл
d =1
? Цикл for автоматически увеличиваетсяd
. Также — обратите внимание, что вы не выполняете повторную инициализациюk
для каждого прохода через внутренний цикл. Если вы просто переместитесьk=0
вниз на несколько строк (и с правильным отступом), вы получите совсем другой результат.3. вы правы, извините, то же самое для x =1
4. это работает, спасибо, приятель
Ответ №1:
Основная проблема заключается в том, что вы не повторно инициализируете k
beofre для каждого вызова внутреннего цикла. Другая проблема заключается в том, что вы не доверяете for
циклам делать то, для чего они предназначены. Такие вещи, как d = 1
бессмысленны.
Работает следующий код:
n=int(input("introduce a nr: "))
for x in range(1,n 1):
k = 0
for d in range(1,x 1):
if x % d==0:
k =1
if k==3:
print(x)
Вывод (для n = 1000
):
4, 9, 25, 49, 121, 169, 289, 361, 529, 841, 961
Интересно, что это последовательность A001248 в онлайн-энциклопедии целочисленных последовательностей. Эта последовательность описывается как последовательность всех квадратов простых чисел. Легко видеть, что это еще один способ описания последовательности, которую вы пытаетесь найти.
Ответ №2:
Некоторые дополнительные, когда вы хотите знать, на какие числа его можно разделить: `
#!/bin/env python3
n = int(input("introduce a nr: "))
for x in range(1, n 1):
diverders = []
for d in range(1, x 1):
if x % d == 0:
diverders.append(d)
if len(diverders) == 3:
print(f'{x} can be devided by {diverders}')