# The Journey Through Number Types

### Positive and negative numbers are not the only number types in existence. There are others: Armstrong numbers, abundant numbers, perfect numbers, and more.

Join the DZone community and get the full member experience.

Join For FreeThis part of the "Math Behind Software" series will be focused solely on math. I am going to present to you a few types of numbers that you can find all around and I bet that you never thought that they may even exist. Let's start with the Armstrong numbers.

## Numbers

### Armstrong Number

In general, an Armstrong number (or narcissistic number) is a number *n* in a given number base (number of unique digits used to represent the number – the most common base currently is decimal system) *b* which can be expressed as a sum of its digits raised to the power of *b*.

Or in a more mathematical fashion:

*a*- Natural number*ai*- Single digit from*a**m*- Number of digits in*a*

We can also express it as a function:

*b*- Number base*n*- Natural number*k*- The number of digits inside*n*in the given base*b*

It is calculated from the following equation:

is calculated from:

Then the number is an Armstrong number if *F(n)* =* n*. The simplest example of an Armstrong number other than 1 or 2-digit numbers is 153, used in many articles as an example - but here I would like to use a less common number (though still with 3 digits): let’s use 371.

Let’s start with a basic equation.

Now let’s check if we get the same result via the usage of the function.

#### Types of Armstrong Numbers

We can differentiate four basic types of Armstrong numbers.

**Trivial**– Where*n*fulfills condition*0*<*n*<*b*for any base*b*; For example, 2 in the 10th base as 2 pow (1 – one digit) = 2 and 0 < 2 < 10.**Non-trivial**– Where*n*fulfills condition*n*>*b*for any base*b*; Basically, all Armstrong numbers in the given*b*other than trivial ones; For example, (previously used) 371 in the 10th base as 371 > 10 and we know that 371 is an Armstrong number.**Sociable**- Periodic point for*F*, for positive integer*p*(so the*p*-th element of*F*values set) and forms a cycle of period*p*. Each Armstrong number is a sociable narcissistic number with*p*= 1.**Amicable**- A sociable narcissistic number with p = 2.

#### Verifying if a Number Is Armstrong Number

Here I will implement a very short method to verify if a particular number is an Armstrong number.

```
public boolean isArmstrong(int n) {
int sum = 0;
int tmp = n;
int length = Integer.toString(n).length();
while (tmp > 0){
sum += Math.pow(tmp % 10, length);
tmp /= 10;
}
return sum == n;
}
```

- First, I get the
`length`

of a number – to know the power to which I will have to raise all the digits within our number. - Then, I am getting the current last digit of the
`tmp`

number. - On the next line, I am rising the last digit to the power of
`n`

length. - Afterward, I am adding the value to the
`sum`

variable - representing the sum of all digits raised to the power of number`n`

length. - In line 6, I am dividing the
`tmp`

variable by`10`

to effectively drop the last digit of the current`tmp`

value. - Such a
`while`

loop guarantees that the program will iterate over all the digits from number`n`

. - Lastly, I am returning the result of comparing values of
`sum`

and`n`

variables.

Of course, this algorithm assumes a decimal-based representation of numbers so it will fail for other number systems like Base-5 or Base-2.

### Abundant Number

It is a positive integer whose aliquot sum - the sum of all divisors except the number - is greater than the original number. The value by which the original number is exceeded is called **abundance**.

In more mathematical terms *s(n)* > *n* where *s(n)* is the **aliquot sum** function for number *n*.

For example, 12 is an abundant number as 1 + 2 + 3 + 4 + 6 = 16.

The **abundance** for 12 is 4 as 16 - 12= 4.

#### Verifying if a Number Is an Abundant Number

```
public static boolean isAbundant(int n) {
int aliquotSum = aliquotSum(n);
return aliquotSum > n;
}
```

It is a one-line function. I am just comparing the `aliquotSum`

of `n`

with the initial `n`

value. Nothing more nothing less just a quick comparison comparison.

### Amenable Number

It is a positive integer *n* for which exists a list (with repetitions) of integers with size equal to the number value, that both sum to the *n* and when multiplied also return *n*. Numbers in the list do not have to be positive.

In more mathematical terms, assume *n* is defined by *n* = 4*k* + 1; then, the set can be expressed as 2*k* (+1)*s*, 2*k* (+1)*s,* and, *n* itself.

For example, 5 can be expressed as a list (1 + (-1) + 1 + (-1) + 5).

### Amicable Number

The term describes a pair of numbers related in such a way that their aliquot sums are equal to each other. In more mathematical definitions, assume pair (*a**,b*): the pair is amicable when *s*(*a*)=*b* & *s*(*b*)=*a*.

The first such pair is (220, 284) as divisors of 220 (1, 2, 4, 5, 10, 11, 20, 22, 44, 55, and 110) sum to 284, and the divisors of 284 (1, 2, 4, 71, and 142) sum to 220.

#### Verifying if a Number Is an Amicable Number

```
public static boolean isAmicable(int a, int b) {
int aliquotSumA = aliquotSum(a);
int aliquotSumB = aliquotSum(b);
return aliquotSumA == b && aliquotSumB == a;
}
```

I am calculating aliquot sums for `a`

and `b`

and then comparing them respectively - the aliquot sum of `b`

with `a`

and the aliquot sum of `a`

with `b`

.

### Perfect Number

It is a positive integer *n* which is equal to its aliquot sum. It is the opposite of an abundant number whose aliquot sum is higher than the number itself. The concept is pretty ancient at this point, as the first mentions of perfect numbers appear in Euclid's Elements published around 300 BC.

In the form of the equation, the perfect number definition looks more or less like this:

*s*(*n*) =*n*where*s*(*n*) is**aliquot sum**function

An example of the perfect number is 6 as 1 + 2 + 3 = 6.

#### Verifying if a Number Is a Perfect Number

```
public static boolean isPerfect(int n) {
int aliquotSum = aliquotSum(n);
return aliquotSum == n;
}
```

Similar to abundant numbers, it is a one-line function. I am just comparing the `aliquotSum`

of `n`

with the initial `n`

value. Nothing more nothing less just a quick comparison comparison.

### Practical Number

The positive integer *n* whose distinct divisors can be used to create any smaller positive integers. The first work related to practical numbers is Fibonachi’s Liber Abaci; however, he is not the one who coined the term practical number. The term was created by Srinivasan, A. K., in his paper titled “Practical Numbers."

12 is also an excellent example here as all the numbers for 1 to 11 can be expressed with the usage of 12 divisors - 1, 2, 3, 4, 6 - namely:

- 5 = 4 +1
- 7 = 4 + 3
- 8 = 6 +2
- 9 = 6 +3
- 10 = 6 +4
- 11 = 6 + 3 + 2

### Parasitic Number

It is an integer whose decimal representation will make a right circular shift when multiplied by *n* where *n* is a single digit integer. In other words, it means that the last digit of its decimal representation will be moved to the first place. However, the common convention does not allow leading zeros to be used.

Depending on the value of n we call particular numbers *n*-parasitic numbers.

Examples:

- 128205 is a 4-parasitic number as 4 x 128205 = 512820
- 142857 is a 5-parasitic number as 5 x 142857 = 714285
- 025641 is not a 4-parasitic number even though 4 x 25641 = 102564

### Untouchable Number

It is an integer that is not equal to the sum of all divisors of any positive integers. In another way, such numbers will never be returned by the **aliquot sum** function called for any number (including the number itself). Their history is quite old as they first appear around 1 thousand years ago in the works of the Arabic mathematician Abu Mansur al-Baghdadi.

Examples of such numbers are 5, 52, 88, and many others.

We can write 5 as 4 + 1 or 2 + 3.

We will have to find a number whose divisors are 2 and 3.

As for 4 + 1 if 4 is the divisor for the number *n*, then 2 is also a divisor of *n* and the equality does not hold because 2 + 4 + 1 is not 5.

### Sociable Number

The term desire number whose aliquot sums create a specific period sequence. Namely, a period sequence where the aliquot sum of the previous number is the value of the next number.

What is more, social numbers are the generalization over perfect numbers and amicable numbers. When the period of sequence is equal to 1 then the number is a perfect number. On the other hand, if the period number is equal to 2 the two numbers in the period created an amicable number.

Additionally, if the period is *n*, the number is called sociable of order *n*.

## OEIS and Numbers

OEIS is an abbreviation for On-Line Encyclopedia of Integer Sequences an online database of integers sequence founded by Neil Sloane quite a long ago (in 1964). As of January 2022, it contains over 350,000 sequences and is the largest database of such kind.

The reason behind mentioning it here is that all of the number types mentioned above are described there in their own entries.

For example:

- A005188 describes the sequence of Base-10 Armstrong numbers.
- A005101 describes the sequence of abundant numbers.
- A100832 describes the amenable numbers.
- A259180 describes the sequence of amicable numbers.
- A000396 describes the sequence of perfect numbers.
- A005153 describes the sequence of practical numbers.
- A092697 describes the simple sequence of parasite numbers.
- A005114 describes the sequence of untouchable numbers.
- A090615 describes the smallest member of sociable quadruples.

## LeetCode and Number

Some of the numbers from here are the ideas for LeetCode tasks, namely the perfect numbers and Armstrong number (premium), at least as far as I was able to check.

If you find more tasks like this do not hesitate to let me know in the comments.

## Conclusion

It was quite a ride over more and more strange types of numbers present in the world around us. Personally, I would never have thought that they even may exist but mathematics surprised me. How about you?

What is more, as you can see, 12 is a really useful number - the base 12 system was even one of the first proper number systems in history - and appears in many mathematical contexts.

I hope that I showed you something new and exciting.

Thank you for your time.

Opinions expressed by DZone contributors are their own.

Comments