Python для циклов вывода в список

1
def factors(n):
for i in reversed(range(1, n+1)):
    if n % i ==0:
        print(i)

Этот код в настоящее время выводит коэффициенты числа в новой строке ex. факторы (18) выходы 18 9 6 и т.д. Как я могу это сделать, когда я печатаю

print("factors for 18 are:", factors(18))

Возвращает список

factors of 18: [18,9,6,3,2,1]

Без печати (i) в моей функции.

  • 2
    Таким образом, в основном ваш вопрос заключается в том, как «создать список чисел вместо печати чисел»? Знаете ли вы о return заявления?
  • 1
    Кстати, этот алгоритм подходит для малых n, но он работает довольно медленно для больших n. Простой способ улучшить это - сохранить пары факторов, i и n // i. Так что, если n - миллион, вам нужно только протестировать i до 1000.
Теги:
list

1 ответ

2
Лучший ответ
def factors(n):
  ret = [] #Make an empty array to store number factors
  for i in reversed(range(1, n+1)):
    if n % i ==0:
      ret.append(i) #append factors
  return ret #return array of factors

print("Factors of 18", factors(18))
  • 0
    Возможно, я что-то делаю не так, но когда я запускаю эту программу, я получаю Факторы 18 [18]
  • 0
    @ PM2Ring запомнит, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню