Перейти к основному содержимому

Автоморфные числа в Java

· 4 мин. чтения

1. Обзор

В этом коротком руководстве мы обсудим автоморфные числа и узнаем пару способов их поиска вместе с программами на Java.

2. Что такое автоморфное число?

Автоморфное число — это число, квадрат которого имеет в конце те же цифры, что и само число.

Например, 25 — автоморфное число, потому что квадрат 25 — это 625, оканчивающийся на 25. Точно так же 76 — автоморфное число, потому что квадрат 76 — это 5776, который снова оканчивается на 76.

В математике автоморфное число также называют круговым числом.

Еще несколько примеров автоморфных чисел: 0, 1, 5, 6, 25, 76, 376, 625, 9376 и т. д.

0 и 1 называются тривиальными автоморфными числами, поскольку они являются автоморфными числами по каждому основанию.

3. Определите, является ли число автоморфным

Существует множество алгоритмов, позволяющих определить, является ли число автоморфным или нет. Далее мы увидим пару подходов.

3.1. Цикл по цифрам и сравнение

Вот один из способов определить, является ли число автоморфным:

  1. получить число и вычислить его квадрат
  2. получить последнюю цифру квадрата и сравнить ее с последней цифрой числа
  • если последние цифры не равны, число не является автоморфным числом
  • если последние цифры равны, переходим к следующему шагу
  1. удалить последнюю цифру числа и квадрата
  2. повторяйте шаги 2 и 3, пока не будут сравнены все цифры числа

Приведенный выше подход перебирает цифры входного числа в обратном порядке.

Давайте напишем Java-программу для реализации этого подхода. Метод isAutomorphicUsingLoop() принимает целое число в качестве входных данных и проверяет, является ли оно автоморфным:

public boolean isAutomorphicUsingLoop(int number) {
int square = number * number;

while (number > 0) {
if (number % 10 != square % 10) {
return false;
}
number /= 10;
square /= 10;
}

return true;
}

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

На любом этапе, если последние цифры не равны, возвращаем false и выходим из метода. В противном случае мы избавляемся от одинаковых последних цифр и повторяем процесс для оставшихся цифр числа .

Давайте проверим это:

assertTrue(AutomorphicNumber.isAutomorphicUsingLoop(76));
assertFalse(AutomorphicNumber.isAutomorphicUsingLoop(9));

3.2. Сравните цифры напрямую

Мы также можем определить, является ли число автоморфным или нет, более простым способом:

  1. получить число и подсчитать количество цифр ( n )
  2. вычислить квадрат числа
  3. получить последние n цифр из квадрата
  • если последние n цифр квадрата составляют исходное число, то число автоморфно
  • иначе это не автоморфное число

В этом случае нам не нужно перебирать цифры числа. Вместо этого мы можем использовать существующие библиотеки фреймворка программирования.

Мы можем использовать класс Math для выполнения числовых операций, таких как подсчет цифр в данном числе и получение этих последних цифр из его квадрата:

public boolean isAutomorphicUsingMath(int number) {
int square = number * number;

int numberOfDigits = (int) Math.floor(Math.log10(number) + 1);
int lastDigits = (int) (square % (Math.pow(10, numberOfDigits)));

return number == lastDigits;
}

Как и в первом подходе, мы начинаем с вычисления квадрата числа . Затем, вместо того, чтобы сравнивать последние цифры числа и квадрата один за другим, мы сразу получаем общее число цифр numberOfDigits с помощью Math.floor() . После этого мы извлекаем столько цифр из квадрата , используя Math.pow() . В конце мы сравниваем введенное число с извлеченным числом lastDigits . [](/lessons/b/-java-lang-math) [](https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/Math.html#pow(double,double))

Если число и lastDigits равны, число является автоморфным и мы возвращаем true, в противном случае мы возвращаем false .

Давайте проверим это:

assertTrue(AutomorphicNumber.isAutomorphicUsingMath(76));
assertFalse(AutomorphicNumber.isAutomorphicUsingMath(9));

4. Вывод

В этой статье мы исследовали автоморфные числа. Мы также рассмотрели несколько способов определить, является ли число автоморфным числом вместе с соответствующими программами Java.

Как всегда, код этих примеров доступен на GitHub .