Cумма делителей числа
n = int(input())
total = 0
total1 = 0
for i in range(1, n + 1):
print(i, end='')
for j in range(1, i + 1):
if i % j == 0:
total += 1
print('+' * total1, end='')
print()
На вход программе подается натуральное число nn. Напишите программу, выводящую графическое изображение делимости чисел от 1 до n включительно. В каждой строке надо напечатать очередное число и столько символов «+», сколько делителей у этого числа.
Формат входных данных На вход программе подается одно натуральное число.
Формат выходных данных Программа должна вывести графическое изображение чисел от 11 до nn, каждое на отдельной строке. Подскажите что поправить надо.
Ответы (4 шт):
n = int(input())
for i in range(11, n + 1):
count = 0
for j in range(1, i + 1):
if i % j == 0:
count += 1
print(i, '+' * count)
n = int(input())
for i in range(1, n + 1):
print(i, end='')
for j in range(1, i + 1):
if i % j == 0:
print('+', end='')
print()
чуть-чуть короче (нет) :)
версия 1:
n = int(input())
for i in range(11, n + 1):
print(i, '+' * len(list(filter(lambda x: i % x == 0, range(1, i + 1)))), sep='')
версия 2:
n = int(input())
for i in range(11, n + 1):
print(i, '+' * len(list(filter(lambda x: not(i % x), range(1, i + 1)))), sep='')
версия 3:
Хватит разврата и откопал стюардессу
n = int(input())
print("\n".join(map(lambda i: str(f'{i}' + '+' * len(list(filter(lambda x: not(i % x), range(1, i + 1))))), range(11, n + 1))))
версия 4:
print("\n".join(map(lambda i: str(f'{i}' + '+' * len(list(filter(lambda x: not(i % x), range(1, i + 1))))), range(11, int(input()) + 1))))
версия 5, окончательная (покороче):
print("\n".join(map(lambda i: f'{i}' + '+' * len(list(filter(lambda x: not(i % x), range(1, i + 1)))), range(11, int(input()) + 1))))
Решение без сложных функция, но работает быстрее, чем вложенные циклы:
for i in range(1, int(input()) + 1):
print(i, *['+' * (i % j == 0) for j in range(1, i + 1)], sep='')