DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Orchestrating Zero-Downtime Deployments With Temporal
  • Token Attribution Framework for Agentic AI in CI/CD
  • Why Round-Robin Won't Save You: Load Balancing Challenges in Data Streaming Services With Heterogeneous Traffic
  • Ingesting Fixed-Width Mainframe Files Into Delta Lake: The Details Nobody Writes Down

Trending

  • Building AI-Powered Java Applications With Jakarta EE and LangChain4j
  • Building Threat Intelligence Pipelines Using Python, APIs, and Elasticsearch
  • Persistent Memory for AI Agents Using LangChain's Deep Agents
  • Liquid Glass, Material 3, and a Lot of Plumbing
  1. DZone
  2. Data Engineering
  3. Data
  4. The Journey Through Number Types

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.

By 
Bartłomiej Żyliński user avatar
Bartłomiej Żyliński
DZone Core CORE ·
Aug. 15, 23 · Tutorial
Likes (3)
Comment
Save
Tweet
Share
4.8K Views

Join the DZone community and get the full member experience.

Join For Free

This 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.

The Journey Through Number Types image

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:

Armstrong number: mathematical expression

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

We can also express it as a function:

Armstrong number: expressed 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:

Equation to calculate k

diis calculated from:

di calcuation

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.

Basic equation, step 1

Basic equation, step 2

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

Result via the usage of the function, step 1

Result via the usage of the function, step 2

Types of Armstrong Numbers

We can differentiate four basic types of Armstrong numbers.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Java
 
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;
}


  1. 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.
  2. Then, I am getting the current last digit of the tmp number.
  3. On the next line, I am rising the last digit to the power of n length.
  4. Afterward, I am adding the value to the sum variable - representing the sum of all digits raised to the power of number n length.
  5. In line 6, I am dividing the tmp variable by 10 to effectively drop the last digit of the current tmp value.
  6. Such a while loop guarantees that the program will iterate over all the digits from number n.
  7. 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

Java
 
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 = 4k + 1; then, the set can be expressed as 2k (+1)s, 2k (+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

Java
 
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

Java
 
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.

Data Types

Opinions expressed by DZone contributors are their own.

Related

  • Orchestrating Zero-Downtime Deployments With Temporal
  • Token Attribution Framework for Agentic AI in CI/CD
  • Why Round-Robin Won't Save You: Load Balancing Challenges in Data Streaming Services With Heterogeneous Traffic
  • Ingesting Fixed-Width Mainframe Files Into Delta Lake: The Details Nobody Writes Down

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook