Flag Counter
Урок одиннадцатый
Магические числа
Азбука Visual Basic © BigCamagan
Магическое число, это такое трехзначное число, для которого сумма кубов цифр его составляющих равна самому этому числу. Одно из магических чисел — это число 153. Действительно:
     13 + 53 + 33 = 1 + 125 + 27 = 153
Можно конечно отыскать все магические числа вручную, но для этого потребуется много времени. Вам придется перебрать все трехзначные числа и каждое из них проверить на магичность. А таких чисел всего 900, так что нужно будет потрудиться как следует. И только четыре из них являются магическими. Составим программу, отыскивающую все магические числа, причем практически мгновенно! В этой маленькой, но красивой программе будем последовательно использовать вложенные циклы:

     For s = 1 To 9     ‘ перебор в разряде сотен
          For d = 0 To 9     ‘ перебор в разряде десятков
               For e = 0 To 9     ‘ перебор в разряде единиц
                    a = s ^ 3 + d ^ 3 + e ^ 3     ‘ сумма кубов цифр числа
                    b = s * 100 + d * 10 + e     ‘ формирование числа
                    If a = b Then Print a;     ‘ проверка числа на магичность
               Next e     ‘ завершение цикла для единиц
          Next d     ‘ завершение цикла для десятков
     Next s     ‘ завершение цикла для сотен

Переменные s, d, и e используются для смены числа сотен, десятков и единиц соответственно. Как видите число сотен s колеблется от 1 до 9 и не может быть равным нулю, потому как число перестанет быть трехзначным! Число же десятков d, как впрочем и число единиц e могут находиться в диапазоне от 0 до 9. Вначале внешний цикл берет число сотен равным единице, вложенный цикл десятков начинает свою работу с нуля, а вот более глубокий по своему вложению цикл единиц прокручивается полностью — от 0 до 9, при этом меняется десять раз только последняя цифра трехзначного числа. Затем цикл десятков берет число десятков равным единице и вновь прокручивает число единиц десять раз. После того как цикл десятков выполнится десять раз происходит возврат к циклу сотен, который число сотен берет теперь за два и так далее. В результате такого последовательного перебора в работе трех циклов просматриваются все трехзначные числа от 100 до 999 включительно. В теле самого глубокого цикла расположились три инструкции. Первая инструкция переменной a присваивает значение суммы кубов цифр составляющих это число. Вторая инструкция формирует само трехзначное число b, зная числа сотен, десятков и единиц этого числа в данный момент. И наконец третья инструкция смотрит: является ли число магическим. Если это так, то число выводится на экран вашего дисплея.
Итак, мы подробно рассмотрели работу программы. Будет лучше, если вы попробуете набрать текст программы без подглядывания. Эта программа работает также как автомобильный счетчик пройденного пути.

Домашнее задание

1. Выясните, существуют ли магические числа среди четырехзначных чисел.
2. Проверьте, может ли в трехзначном числе сумма квадратов цифр составляющих это число равняться самому числу.
Азбука Visual Basic © BigCamagan
создать сайт бесплатно