Решается обычным перебором 0 - нет 01 возможно Б, разделяем на 2 варианта 011 (Д) или Б 1 Д 0 | Б 10 (Г) Д 01(Б) | Б Г 1 | Б 101 (101 не существует, значит отсекаем этот вариант) ДБ 0 | Д 010 (также убираем) | БГ 10(Г) ДБ 00 | БГГ 0 | БГ 100(В) ДБ 000(А) |БГГ 00 | БГВ 0 ДБА 1 | БГГ 001(убираем) | БГВ 01(Б) ДБА 11(убираем) | БГВБ 1 | БГВ 011(Д) БГВБ 10(Г) | БГВД 0 осталось 2 цифры БГВБГ 00( убираем) | БГВБ 1000(убираем) | БГВД 000(А) следователь у нас остался только 1 вариант. это БГВДА Лучше и нагляднее все это расписать деревом, но тут как вам удобнее
Var A,d,k,i:longint; Begin WriteLn('Введите четыре числа'); For i:= 1 to 4 do Begin Read(A); Write('Делители числа ',A,': ',A,', '); d:=A div 2+1; While d>0 do Begin if A mod d = 0 then Begin Write(d,', '); k:=k+1; End; d:=d-1; End; Write('кол-во его делителей: ',k); k:=1; WriteLn; End; End.
Пример: Введите четыре числа 987654321 32767 256 13 Делители числа 987654321: 987654321, 329218107, 109739369, 58097313, 19365771, 6455257, 3417489, 1139163, 379721, 2601, 867, 289, 153, 51, 17, 9, 3, 1, кол-во его делителей: 17 Делители числа 32767: 32767, 4681, 1057, 217, 151, 31, 7, 1, кол-во его делителей: 8 Делители числа 256: 256, 128, 64, 32, 16, 8, 4, 2, 1, кол-во его делителей: 9 Делители числа 13: 13, 1, кол-во его делителей: 2
0 - нет
01 возможно Б, разделяем на 2 варианта
011 (Д) или Б 1
Д 0 | Б 10 (Г)
Д 01(Б) | Б Г 1 | Б 101 (101 не существует, значит отсекаем этот вариант)
ДБ 0 | Д 010 (также убираем) | БГ 10(Г)
ДБ 00 | БГГ 0 | БГ 100(В)
ДБ 000(А) |БГГ 00 | БГВ 0
ДБА 1 | БГГ 001(убираем) | БГВ 01(Б)
ДБА 11(убираем) | БГВБ 1 | БГВ 011(Д)
БГВБ 10(Г) | БГВД 0
осталось 2 цифры
БГВБГ 00( убираем) | БГВБ 1000(убираем) | БГВД 000(А)
следователь у нас остался только 1 вариант. это БГВДА
Лучше и нагляднее все это расписать деревом, но тут как вам удобнее