Подробнее о вызовах методов рассказано на стр. 45.
Согласно легенде, изобретатель шахмат Сета потребовал от индусского царя Шерама, решившего наградить его, выдать за первую клетку доски одно пшеничное зерно, за вторую – два, за третью – четыре и так далее, вплоть до последней, шестьдесят четвёртой.
Список всех методов класса String приведён в разделе Library Reference книги [3]. Команда ri String печатает его целиком, а команда ri String#scan – описание метода scan.
Блок принято ограничивать do-end вместо {}, если его тело занимает несколько строк.
Подробнее о вызовах методов рассказано на стр. 45.
Более точно это формулируют так: асимптотическая сложность метода есть Θ(n).
Поэтому сложность получающейся программы будет равна Θ(√n)
Смотри, например, http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes.
Integer учитывает также индикаторы системы счисления – префиксы 0, 0b и 0x.
Загляните на сайт
На самом деле ошибка возникла не из-за работы компилятора, а из-за некорректно написанной грамматики, в чем легко убедиться, рассмотрев дерево вывода формул для данной грамматики.
Хотя в языке Ruby в данном случае можно убрать "protected", тем самым размещая все нижеописываемые константы и методы в зоне действия квалификатора private, в языках Java и C++ здесь нужен именно квалификатор protected.