Java - Tìm số nguyên m lớn nhất sao cho 1 + 2 + 3 + ... + m < n (n nhập từ bàn phím).
Viết chương trình nhập vào số nguyên n từ bàn phím. Tìm và in ra màn hình số nguyên m lớn nhất sao cho 1 + 2 + 3 + ... + m < n.
Yêu cầu: Chương trình phải kiểm tra và yêu cầu người dùng nhập vào n >= 0.
Bài giải
-------------------- ######## --------------------
package vong_lap_do_while;
import java.util.Scanner;
public class TimSo {
public static void main(String[] args) {
int m = 0, n, sum = 0;
Scanner scanner = new Scanner(System.in);
/*
* Nhập vào số nguyên n
* và kiểm tra nếu n < 0 đúng thì quay lại thực hiện câu lệnh bên trong do
* ngược lại thoát ra khỏi vòng lặp.
*/
do {
System.out.println("Nhập vào số nguyên n: ");
n = scanner.nextInt();
} while (n < 0);
// tìm số m
while ((sum + m) < n) {
sum += ++m; // tăng m lên 1 đơn vị và tính sum = sum + m
System.out.print(m); // System.out.print(): hiển thị trên cùng 1 dòng
if ((sum + m) < n) {
System.out.print(" + ");
}
}
if (sum > 0) {
System.out.println(" = " + sum + " <= " + n);
}
System.out.println("m lớn nhất = " + m);
}
}
Giải thích hoạt động của chương trình trên:

Bước 1: Nhập vào số nguyên và kiểm tra nếu số vừa nhập nhỏ hơn 0 thì nhập lại. Vì tôi nhập vào số 5 > 0 nên điều kiện trong do - while sai nên sẽ thoát khỏi vòng lặp.
Bước 2: Thực hiện vòng lặp while. Lúc này sum = 0, m = 0 và sum + m = 0 < 5 (đúng) nên sẽ tăng m lên 1 đơn vị và sum = sum + m = 1.
Bước 3: Hiển thị m = 1 ra màn hình. Sau đó câu lệnh if ((sum + m) < n) sẽ được thực thi, vì sum + m = 1 + 1 = 2 < 5 (đúng) nên sẽ hiển thị dấu "+" ra màn hình.
Bài viết này được đăng tại [free tuts .net]
Bước 4: Quay lại bước 2. Lúc này sum = 1, m = 1 và sum + m = 2 < 5 (đúng) nên sẽ tăng m lên 1 đơn vị và sum = sum + m = 1 + 2 = 3.
Bước 5: Quay lại bước 3: Hiển thị m = 2 ra màn hình. Sau đó câu lệnh if ((sum + m) < n) sẽ được thực thi, vì sum + m = 3 + 2 = 5 < 5 (sai) nên sẽ không thực hiện câu lệnh bên trong if.
Bước 6: sum = 5 > 0 (đúng) nên câu lệnh System.out.println(" = " + sum + " <= " + n); sẽ được thực thi và kết quả là dòng 1 + 2 = 3 <= 5 sẽ được hiển thị ra màn hình.
Bước 7: Cuối cùng dòng lệnh System.out.println("m lớn nhất = " + m); được thực thi và sẽ hiển thị kết quả m lớn nhất = 2.
Câu hỏi thường gặp liên quan:
- Java - Tìm số nguyên m lớn nhất sao cho 1 + 2 + 3 + ... + m < n (n nhập từ bàn phím).
- Java - Viết chương trình tính giai thừa của một số
- Java - Viết chương trình kiểm tra username và password.
- Java - Viết chương trình cho phép người dùng chọn đáp án đúng (câu hỏi 2)

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