Числовая логика Армстронга - PullRequest
0 голосов
/ 28 октября 2019

Я слаб в математике, поэтому вопрос, который я задаю, может быть неуместен для большинства здесь, но вопрос в том, почему мы делим число Армстронга на 10? Я имею в виду, что мы можем разделить число с любым другим числом, кроме 10.

1 Ответ

1 голос
/ 28 октября 2019

Я думаю, проблема в том, что вы не понимаете, что такое число Армстронга. Из одного веб-поиска:

Число Армстронга, состоящее из трех цифр, представляет собой целое число, такое, что сумма кубов его цифр равна самому числу. Например, 371 является числом Армстронга, так как 3 3 + 7 3 + 1 3 = 371.

Итак, чтобы проверить, есть ли какие-либослучайное число - это число Армстронга: скажем, 243. Возьмите число, как написано, и сделайте 2 × 2 × 2 + 4 × 4 × 4 + 3 × 3 × 3 = 8 + 16 + 27, что составляет всего 99, поэтому число 243 не является числом Армстронга.

Теперь есть два простых способа получить отдельные цифры номера в компьютерной программе. Сначала вы можете преобразовать в строку.

std::string theString = to_string(243);

А затем для каждой цифры преобразовать обратно в число. Это довольно грубое значение.

Или вы можете сделать это:

int sumOfCubes = 0;
for (int newNumber = myNumber; newNumber > 0; newNumber = newNumber / 10) {
    // This is the modulus operator, or the remainder. 243 % 10 = 3.
    // 24 % 10 = 4. and 2 % 10 = 2.
    int digit = newNumber % 10;
    sumOfCubes += digit*digit*digit;
}

if (sumOfCubes == myNumber) {
    cout << myNumber << " is an Armstrong number." << endl;
}

Что происходит в цикле:

  1. newNumber инициализируется в myNumber (243 вмой пример). цифра становится 3 (243, деленное на 10, имеет остаток 3). sumOfCubes + = 27;
  2. Затем он зацикливается. newNumber становится newNumber / 10 как целое число, которое теперь составляет 24. цифра равна 4. Мы добавляем 64 к sumOfCubes.
  3. Повторяем зацикливание. newNumber становится 24/10 = 2. Итак, мы добавляем 8.
  4. Пытается зациклить. NewNumber становится равным нулю, что не соответствует условию, поэтому цикл заканчивается.

Готово.

...