Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие
(
S
−
1
)
2
, так как в худшем случае составное число вида
x
2
будет иметь два наибольших делителя
x
и 1. Время работы этого алгоритма
O
(
S
4
)
. Можно существенно ускорить вычисления, если учесть, что при поиске разложения на множители числа
N
можно рассмотреть только числа не превышающие
√
N
. Наибольшим делителем числа
N
будет
N
a
, где
a
– наименьший делитель, а вторым наибольшим делителем будет либо
N
b
, где
b
– второй по величине делитель
N
(также либо число, либо
a
2
), либо
a
, если
N
является произведением двух различных чисел, либо 1, если
N
=
a
2
.
1 а XCIII б MMCXLVI 242919/2=21459 остаток 1
21459/2=10729 остаток 1
10729/2=5364 остаток 1
5364/2=2682 остаток 0
2682/2=1341 остаток 0
1341/2=670 остаток 1
670/2=335 остаток 0
335/2=167 остаток 1
167/2=83 остаток 1
83/2=41 остаток 1
41/2=20 остаток 1
20/2=10 остаток 0
10/2=5 остаток 0
5/2=2 остаток 1
2/2=1 остаток 0
1/2=0 остаток 1
Записав полученные цифры в ряд снизу вверх, получим:
4291910=10100111101001
восьмеричная
Приведем целую часть числа 42919 в систему счисления 8 последовательным делением на число 8:
42919/8=5364 остаток 7
5364/8=670 остаток 4
670/8=83 остаток 6
83/8=10 остаток 3
10/8=1 остаток 2
1/8=0 остаток 1
Записав полученные цифры в ряд снизу вверх, получим:
4291910=1236478
В итоге Получим решение:
4291910 =1236478
шестнадцатеричную
Приведем целую часть числа 42910 в систему счисления 16 последовательным делением на число 16:
42910/16=2681 остаток 14=E
2681/16=167 остаток 9
167/16=10 остаток 7
10/16=0 остаток 10=A
Записав полученные цифры в ряд снизу вверх, получим:
4291010=A79E16
В итоге Получим решение:
4291010 =A79E16
Поделитесь своими знаниями, ответьте на вопрос:
A,B:integer;
Begin
WriteLn('Введите целое трёхзначное число');
ReadLn(A);
B:=(A div 100)+((A div 10) mod 10) + (A mod 10);
if (A mod B = 0) then Write(A,' делится на ',B)
else Write(A,' не делится на ',B);
End.