Trong bài viết này, chúng ta sẽ tìm hiểu cách hiển thị các số Armstrong giữa hai số cho trước trong Java. Số Armstrong là số bằng tổng lập phương các chữ số của nó.
Số nguyên gọi là số Armstrong bậc n nếu tách từng chữ số, lập phương và cộng lại thì tổng bằng chính số đó: abcd... = a³ + b³ + c³ + d³ + ...
Với số Armstrong 3 chữ số, tổng lập phương các chữ số bằng chính nó. Ví dụ: 153 là số Armstrong.
153 = 1³ + 5³ + 3³
Ví dụ khác: 371.
371 = 27 + 343 + 1
Giả sử ta muốn các số Armstrong giữa hai số. Minh họa:
Đầu vào
Giả sử đầu vào:
1 & 500
Đầu ra
Kết quả mong đợi:
Các số Armstrong giữa 1 và 500 là: 1, 153, 370, 371, 407
Thuật toán
Bước 1 - BẮT ĐẦU Bước 2 - Khai báo 4 số nguyên: my_input_1, my_input_2, i, sum Bước 3 - Nhập hai số từ người dùng hoặc định nghĩa trước Bước 4 - Đọc giá trị Bước 5 - Chạy vòng lặp for sinh số Armstrong dùng %, /, * Bước 6 - Chia 10 lấy dư cho 'check' Bước 7 - Nhân 'rem' 3 lần, cộng vào 'sum', gán lại cho 'sum' Bước 8 - Chia 'check' cho 10, gán lại cho 'check' Bước 9 - Hiển thị kết quả Bước 10 - DỪNG
Ví dụ 1: Nhập từ bàn phím
Người dùng nhập dựa trên lời nhắc. Thử trực tiếp trong coding ground.
import java.util.Scanner;
public class ArmstrongNumbers {
public static void main(String args[]) {
int input_1, input_2, check, rem, sum, i;
Scanner my_scanner = new Scanner(System.in);
System.out.println("Required packages have been imported");
System.out.println("A scanner object has been defined");
System.out.println("Enter the first number:");
input_1 = my_scanner.nextInt();
System.out.println("Enter the limit:");
input_2 = my_scanner.nextInt();
System.out.println("The Armstrong numbers are:");
for (i = input_1; i < input_2; i++) {
sum = 0;
check = i;
while (check != 0) {
rem = check % 10;
sum = sum + (rem * rem * rem);
check = check / 10;
}
if (sum == i) {
System.out.println(i);
}
}
}
}
Đầu ra
Required packages have been imported A scanner object has been defined Enter the first number: 1 Enter the limit: 500 The Armstrong numbers are: 1 153 370 371 407
Ví dụ 2: Giá trị định nghĩa trước
Hai số đã được định nghĩa trước.
public class ArmstrongNumbers {
public static void main(String args[]) {
int input_1, input_2, check, rem, sum, i;
input_1 = 1;
input_2 = 500;
System.out.printf("The first number is %d and the limit is %d", input_1, input_2);
System.out.println("\nThe Armstrong numbers are:");
for (i = input_1; i < input_2; i++) {
sum = 0;
check = i;
while (check != 0) {
rem = check % 10;
sum = sum + (rem * rem * rem);
check = check / 10;
}
if (sum == i) {
System.out.println(i);
}
}
}
}
Đầu ra
The first number is 1 and the limit is 500 The Armstrong numbers are: 1 153 370 371 407