Kiến thức

Java-Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số nguyên dương.

Bạn đang xem: Java-Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số nguyên dương.

Java – Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số nguyên dương.

<!–

–>

Viết chương trình nhập vào 2 số nguyên dương, tìm và in ra màn hình ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số nguyên dương nhập từ bàn phím.

Bài giải

——————– ######## ——————–

Bài giải
package vong_lap_while; import java.util.Scanner; public class TimUSCLNVaBSCNN { public static void main(String[] args) { int firstNumber, secondNumber, temp1, temp2, uscln, bscnn; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào số thứ nhất: "); firstNumber = scanner.nextInt(); System.out.println("Nhập vào số thứ hai: "); secondNumber = scanner.nextInt(); while ((firstNumber <= 0) || (secondNumber <= 0)) { System.out.println("Nhập lại hai số nguyên dương!"); System.out.println("Nhập vào số thứ nhất: "); firstNumber = scanner.nextInt(); System.out.println("Nhập vào số thứ hai: "); secondNumber = scanner.nextInt(); } // tìm ước số chung lớn nhất temp1 = firstNumber; temp2 = secondNumber; while (temp1 != temp2) { if (temp1 > temp2) { temp1 -= temp2; } else { temp2 -= temp1; } } uscln = temp1; System.out.println("Ước số chung lớn nhất của " + firstNumber + " và " + secondNumber + " = " + uscln); System.out.println("Bội số chung lớn nhất của " + firstNumber + " và " + secondNumber + " = " + ((firstNumber * secondNumber) / uscln)); } } 

Kết quả sau khi biên dịch chương trình:

timusclnbscnn PNG

Giải thích hoạt động của chương trình trên: Trong chương trình này, tôi nhập vào hai số 8 và 16 thì trình biên dịch sẽ thực hiện các bước như sau:

Bước 1: Kiểm tra thấy hai số này thỏa mãn điều kiện là số nguyên dương nên bỏ qua phần kiểm tra while ((firstNumber <= 0) || (secondNumber <= 0)) và thực hiện các lệnh bên dưới.

Bước 2: Gán giá trị biến temp1 = 16 temp2 = 56.

Bước 3:  Kiểm tra điều kiện bên trong while: Vì 16 != 56 nên sẽ thực thi lệnh bên trong while. Lúc này 16 < 56 nên lệnh bên trong else sẽ được thực hiện và lúc này biến temp2 = 40.

Bước 4: Quay lại bước 3, vì 16 != 40 nên sẽ thực thi lệnh bên trong while. Lúc này 16 < 40 nên lệnh bên trong else sẽ được thực hiện và lúc này biến temp2 = 24 .

Bước 5: Quay lại bước 3, vì 16 != 24 nên sẽ thực thi lệnh bên trong while. Lúc này 16 < 24 nên lệnh bên trong else sẽ được thực hiện và lúc này biến temp2 = 8 .

Bước 5: Quay lại bước 3, vì 16 != 8 nên sẽ thực thi lệnh bên trong while. Lúc này 16 > 8 nên lệnh bên trong if sẽ được thực hiện và lúc này biến temp2 = 8 .

Bước 6: Quay lại bước 3, lúc này while (temp1 != temp2) sẽ trả về kết quả là sai. Lúc này vòng lặp kết thúc và ước số chung lớn nhất của 2 số này sẽ bằng 8.

Trong bài tập này, tôi có một đoạn code như sau:

while ((firstNumber <= 0) || (secondNumber <= 0)) { System.out.println("Nhập lại hai số nguyên dương!"); System.out.println("Nhập vào số thứ nhất: "); firstNumber = scanner.nextInt(); System.out.println("Nhập vào số thứ hai: "); secondNumber = scanner.nextInt(); }

Đoạn code này dùng trong trường hợp số bạn nhập vào không thỏa mãn điều kiện > 0 thì chương trình sẽ yêu cầu bạn nhập lại. Hình minh họa như sau:

timusclnbscnnloi PNG

 

Nguồn:

freetuts.net

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Check Also
Close
Back to top button