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()
Объяснение:
На случай, если сайт сломает табуляции в коде (А он их сломает), ниже представлен скриншот оригинала кода. Программа протестирована.
var
n,s:integer;
begin
s:=0;
repeat
Read(n);
if n<>0 then
if (n mod 6=0) and (n mod 10=2) then s:=s+n
until n=0;
Writeln(s)
end.
Пример
16
42
18
132
94
18
0
174
Кроме этого, зачем-то требуют блок-схему - приведена во вложении, выполнена по ГОСТ 19.701-90 (ISO 5807-85).
2. А вот так эту задачу можно решить в современном Паскале
PascalABC.NET 3.3.5, сборка 1660 от 20.04.2018
Внимание! Если программа не работает, обновите версию!
begin
ReadSeqIntegerWhile(t->t<>0)
.Where(t->(t mod 6=0) and (t mod 10=2)).Sum.Println
end.
И блок-схема тут вообще не нужна: она ничего не даст.
Сравнение явно не в пользу школьного "образования" - учить, как выполнять работу двадцать минут вместо двух.