def check_perfect(number:int, dividers = []):
for i in range(1, number):
if number%i == 0:
dividers.append(i)
if sum(dividers) == number:
return 1
def get_div(num, div = []):
for i in range(1, num):
if num%i == 0:
div.append(i)
return div
def main():
number = int(input())
if check_perfect(number):
print(' '.join(str(num) for num in get_div(number)))
else:
print(0)
if __name__ == '__main__':
main()
Объяснение:
На случай, если сайт сломает табуляции в коде (А он их сломает), ниже представлен скриншот оригинала кода. Программа протестирована.
Чтоб был ясен ход мыслей, для начала сделаем это для 10тичной сс
Минимальное 4-значное число (берем что все цифры значимые и нет ведущих нулей) будет 1000 (это первое 4значное число после всех 3значных, т.е. 999+1=1000).
Максимальное 4значное число можно найти отнимая от минимального 5значного единицу 10000-1 = 9999
цифра 1 - это минимальное после 0 и она есть во всех системах счисления.
Потому минимальное 4 значное для всех сс будет 1000
Максимальное будем вычислять так 10000-1
2 сс: 10000-1 = 1111
4 сс: 10000-1 = 3333
6 сс: 10000-1 = 5555
8 сс: 10000-1 = 7777
Надеюсь понятно)
var number, K:integer; //определяем переменные, number - переменная для вывода
begin
readln(K); //читаем K c клавиатуры
while number <> K do begin //ставим условия пока number не будет равнятся K
number:=number+2; //повышаем number на 2
writeln(number); //выводим number на экран с новой строки
end;
end.