Java program to find the amstrong numbers between interval has been shown here. A positive integer of order n is called an amstrong number if the sum of each digit to the power n is equal to that number. For example, 8 and 370 are amstrong numbers as $8 = 8^1$ and $370 = 3^3 + 7^3 + 0^3$.

The amstrong numbers between 1 and 400 are 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371.

The algorithm, pseudocode and time complexity of the program have been shown below.

## 1. Algorithm to find amstrong numbers between interval

1. Take lower limit l and upper limit u as inputs.

2. For each number n between l and u

3. Calculate d, the total no of digit of n

4. Extract each digit $p_i$ and perform sum = $\sum_{i=1}^d p_i ^d$

5. Check If sum = n

6. If step 5 is true, then display n as an amstrong number

7. Go to step 2 to check next number

## 2. Pseudocode to find amstrong numbers between interval

Input : Lower bound $l$ and Upper bound $u$

Output : Amstrong numbers between $l$ and $u$

1. Procedure findAmstrong($l, u$):

2. Repeat for $n \in [l, u]$:

3. $t \leftarrow n$

4. $sum \leftarrow 0$

5. Count $d$, the total no of digits in $n$

6. Repeat until $t != 0$

7. $r \leftarrow t \mod 10$

8. $sum \leftarrow sum + r^d$

9. $t \leftarrow t / 10$

10.If $sum \mod n$ = 0:

11.Print "$n$ is an Amstrong number"

12. End Procedure

## 3. Time complexity to find amstrong numbers between interval

Time Complexity: O(nlog(k))

Where n is the total no. of integers between lower and upper bound and k is the average length of the integers.

## 4. Java Program & output to find amstrong numbers between interval

Code has been copied
/******************************
alphabetacoder.com
Java program to find amstrong
numbers between interval
*******************************/

import java.util.Scanner;
import java.lang.Math;

class Main {
public static void main(String args[]) {
// declare instance of Scanner class
Scanner sc = new Scanner(System.in);

// declare variables
int u, l, n, d = 0, t, r, sum = 0;

// take input of lower and upper bound
System.out.print("Enter the lower bound = ");
l = sc.nextInt();
System.out.print("Enter the upper bound = ");
u = sc.nextInt();

System.out.print("Amstrong numbers between " + l + " and " + u + ": ");

// check each number from l to u
for (n = l; n <= u; n++) {
// initialize
t = n;
d = 0;
sum = 0;
// calculate the number of digit
while (t != 0) {
d++;
t = t / 10;
}

// copy value
t = n;
// find the sum of digits each to the power d
while (t != 0) {
r = t % 10;
sum = sum + (int) Math.pow(r, d);
t = t / 10;
}

//check if input number is amstrong or not
if (n == sum)
System.out.print(n + " ");
}
}
}


Output

Enter the lower bound = 100

Enter the upper bound = 100000

Amstrong numbers between 100 and 10000: 153 370 371 407 1634 8208 9474