Делим группу чисел от 1 до 16 на 2 группы. 12345678 и 9 10 11 12 13 14 15 16 Спрашиваем больше ли 8 загаданное число? Допустим ответили, что не больше. Тогда берём первую группу чисел и снова делим на 2 группы. 1234 5678. И снова задаём вопрос о величине числа относительно уже 4. Допустим отвечают, что больше. Теперь берём группу чисел "5678" и снова делим её пополам (56 и 78). Проделываем всё то же самое. Остаётся всего два числа и тут уже Не трудно будет узнать число. Суммируя число вопросов получается 4.
Function SumOfDividers(ByVal num)
SumOfDividers = 0
for i = 1 to num - 1
if num mod i = 0 then SumOfDividers = SumOfDividers + i
next
End Function
Sub Zadanie23317569(ByVal n)
for i = 2 to n
k = SumOfDividers(i)
if SumOfDividers(k) = i then Msgbox i & " " & k
next
End Sub
Zadanie23317569 300
Код на VB.Net - исправление как догадалась, не проверялось
Sub Main(ByVal n)
Dim i As Integer
Dim k As Integer
for i = 2 to n
k = SumOfDividers(i)
if SumOfDividers(k) = i then Console.WritelLine(i & " " & k)
next
End Sub
Function SumOfDividers(ByVal num As Integer) As Integer
Dim i As Integer
SumOfDividers = 0
for i = 1 to num - 1
if num mod i = 0 then SumOfDividers = SumOfDividers + i
next
End Function
Спрашиваем больше ли 8 загаданное число? Допустим ответили, что не больше.
Тогда берём первую группу чисел и снова делим на 2 группы. 1234 5678. И снова задаём вопрос о величине числа относительно уже 4. Допустим отвечают, что больше.
Теперь берём группу чисел "5678" и снова делим её пополам (56 и 78). Проделываем всё то же самое.
Остаётся всего два числа и тут уже Не трудно будет узнать число. Суммируя число вопросов получается 4.