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
-------------------- ######## --------------------
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:

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 và temp2 = 56.
Bài viết này được đăng tại [free tuts .net]
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();
}
Câu hỏi thường gặp liên quan:
- Java - Viết chương trình in ra các số chẵn nhỏ hơn hoặc bằng 20.
- 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ính giai thừa của một số nguyên dương bất kỳ.
- Java - Viết chương trình tính tổng của bình phương các số.
- Java - Bài tập tính tiền taxi
- Java - Tính tổng các chữ số của một số nguyên.
- Java - Đếm số chữ số của một số nguyên dương.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng