Bài 2: Bài Tập Java Toán, Số Học – Tổng Hợp Bài Tập Java Có Lời Giải

vncoder logo

  • Học lập trình
  • |
  • Bài viết
  • |
  • Tin tức
  • |
  • Tuyển dụng
  • |
  • Liên hệ
  • |
  • Đăng ký
  • |
  • Đăng nhập

PHP

Laravel

Android

Java

HTML5

CSS3

NodeJS

VueJS

Swift

Python

Machine Learning

C/C++

Linux/Server

SQL

Javascript

Game

Phân tích thiết kế hệ thống

Servlet/JSP

AI

  1. Trang chủ
  2. Java
  3. Tổng hợp Bài tập Java có lời giải
  4. Bài tập Java Toán, Số học
  • Bài 1: Bài tập làm quen với Java
  • Bài 2: Bài tập Java Toán, Số học
  • Bài 3: Bài tập Java về mảng, dãy số

Bài 2: Bài tập Java Toán, Số học – Tổng hợp Bài tập Java có lời giải

Đăng bởi: Admin | Lượt xem: 5418 | Chuyên mục: Java

Trong bài này mình sẽ tổng hợp một số bài tập Java liên quan đến các bài toán số học, tìm UCLN, BCNN, số nguyên tố, giai thừa, luỹ thừa, giải phương trìnhTrong bài này mình sẽ tổng hợp một số bài tập Java liên quan đến các bài toán số học, tìm UCLN, BCNN, số nguyên tố, giai thừa, luỹ thừa, giải phương trìnhBài 1. Tính giai thừa Viết một chương trình tính giai thừa của một số nguyên dương n. Với n được nhập từ bàn phím. Ví dụ, n = 8 thì kết quả đầu ra phải là 1*2*3*4*5*6*7*8 = 40320.Hướng dẫn:Bài này chúng ta có thể sử dụng vòng lặp hoặc đệ quy để giải Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.print(“Nhập số nguyên dương n = “); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int gt = 1; for (int i = 1; i &lt= n; i++){ gt = gt * i; } System.out.println(“Giai thừa của ” + n + ” là: ” + gt); } }Code mẫu đệ quy:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.print(“Nhập số nguyên dương n = “); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); System.out.println(“Giai thừa của ” + n + ” là: ” + tinhGiaithua(n)); } /** * tinh giai thua */ public static long tinhGiaithua(int n) { if (n &gt 0) { return n * tinhGiaithua(n – 1); } else { return 1; } } }Kết quả:Nhập số nguyên dương n = 5 Giai thừa của 5 là: 120Bài 2. Kiểm tra số nguyên tốNhập vào một số nguyên dương n, kiểm tra xem n có phải là số nguyên tố hay không?Hướng dẫn:Nếu n < 2 thì n không phải là số nguyên tốNếu n >= 2 thì n là số nguyên tố nếu n chỉ chia hết cho một và chính nó. Ta dùng phòng for cho biến i chạy từ 2 tới căn bậc 2 của n, nếu n chia hết cho i thì n không phải là số nguyên tốCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.print(“Nhập số nguyên dương n = “); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if (n &lt 2) { System.out.println(“n không phải là số nguyên tố”); } boolean isSoNguyenTo = true; for (int i = 2; i &lt Math.sqrt(n); i++){ if(n%i == 0){ isSoNguyenTo = false; break; } } if (isSoNguyenTo) { System.out.println(“n là số nguyên tố”); } else { System.out.println(“n không phải là số nguyên tố”); } } }Kết quả:Nhập số nguyên dương n = 8 n không phải là số nguyên tố Nhập số nguyên dương n = 13 n là số nguyên tốBài 3. Liệt kê số nguyên tốViết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n. Số nguyên dương n được nhập từ bàn phímHướng dẫn:Bài này tương tự bài trên, tuy nhiên chúng ta sẽ dùng vòng for duyệt các số nguyên dượng từ 2 tới n, và kiểm tra từng số này bằng một hàm check số nguyên tốCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập n = “); int n = scanner.nextInt(); System.out.printf(“Tất cả các số nguyên tố nhỏ hơn %d là: \n”, n); if (n &gt= 2) { System.out.print(2); } for (int i = 3; i &lt n; i+=2) { if (isPrimeNumber(i)) { System.out.print(” ” + i); } } } /** * check so nguyen to * * @author VNCoder * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { // so nguyen n &lt 2 khong phai la so nguyen to if (n &lt 2) { return false; } // check so nguyen to khi n &gt= 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i &lt= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }Kết quả:Nhập n = 30 Tất cả các số nguyên tố nhỏ hơn 30 là: 2 3 5 7 11 13 17 19 23 29Bài 4. Tìm Ước chung lớn nhất (UCLN) và Bội chung nhỏ nhất (BCNN) của 2 số nguyên dương a và b nhập từ bàn phímHướng dẫn:Sử dụng Giải thuật Euclid, hay Thuật toán Euclid, là một giải thuật giúp tính ước số chung lớn nhất (ƯSCLN) của hai số một cách hiệu quả. Giải thuật này đã được biết đến từ khoảng năm 300 trước Công Nguyên. Nhà toán học Hy Lạp cổ Euclid đã viết giải thuật này trong cuốn sách toán nổi tiếng Elements.Ở dạng đơn giản nhất, thuật toán Euclid bắt đầu với cặp số nguyên dương, và tạo ra một cặp số nguyên dương mới bao gồm số nhỏ hơn và phần dư của phép chia hai số ban đầu. Quá trình được tiếp tục cho đến khi hai số trong cặp bằng nhau, giá trị lúc đó sẽ trở thành ước số chung lớn nhất của cặp số ban đầu.Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương a = “); int a = scanner.nextInt(); System.out.print(“Nhập số nguyên dương b = “); int b = scanner.nextInt(); // tính USCLN của a và b System.out.println(“USCLN của ” + a + ” và ” + b + ” là: ” + USCLN(a, b)); // tính BSCNN của a và b System.out.println(“BSCNN của ” + a + ” và ” + b + ” là: ” + BSCNN(a, b)); } /** * Tìm ước số chung lớn nhất (USCLN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return USCLN của a và b */ public static int USCLN(int a, int b) { if (b == 0) return a; return USCLN(b, a % b); } /** * Tìm bội số chung nhỏ nhất (BSCNN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return BSCNN của a và b */ public static int BSCNN(int a, int b) { return (a * b) / USCLN(a, b); } }Kết quả:Nhập số nguyên dương a = 8 Nhập số nguyên dương b = 20 USCLN của 8 và 20 là: 4 BSCNN của 8 và 20 là: 40Bài 5. Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0. Giải phương trình bậc hai thì chúng ta dùng công thức Delta đã học ở phổ thôngCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập hệ số bậc 2, a = “); float a = scanner.nextFloat(); System.out.print(“Nhập hệ số bậc 1, b = “); float b = scanner.nextFloat(); System.out.print(“Nhập hằng số tự do, c = “); float c = scanner.nextFloat(); // kiểm tra các hệ số if (a == 0) { if (b == 0) { System.out.println(“Phương trình vô nghiệm!”); } else { System.out.println(“Phương trình có một nghiệm: ” + “x = ” + (-c / b)); } return; } // tính delta float delta = b*b – 4*a*c; float x1; float x2; // tính nghiệm if (delta &gt 0) { x1 = (float) ((-b + Math.sqrt(delta)) / (2*a)); x2 = (float) ((-b – Math.sqrt(delta)) / (2*a)); System.out.println(“Phương trình có 2 nghiệm là: ” + “x1 = ” + x1 + ” và x2 = ” + x2); } else if (delta == 0) { x1 = (-b / (2 * a)); System.out.println(“Phương trình có nghiệm kép: ” + “x1 = x2 = ” + x1); } else { System.out.println(“Phương trình vô nghiệm!”); } } }Kết quả:Nhập hệ số bậc 2, a = 2 Nhập hệ số bậc 1, b = 3 Nhập hằng số tự do, c = -9 Phương trình có 2 nghiệm là: x1 = 1.5 và x2 = -3.0Bài 6. Dãy số FibonacciDãy số Fibonacci được định nghĩa như sau: F0 = 0, F1 = 1, F2 = 1, Fn = F(n-1) + F(n-2) với n >= 2. Ví dụ: 0, 1, 1, 2, 3, 5, 8, … Hãy viết chương trình tìm n số Fibonacci đầu tiên.Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.println(n + ” số đầu tiên của dãy số fibonacci: “); for (int i = 0; i &lt n; i++) { System.out.print(fibonacci(i) + ” “); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n &lt 0) { return -1; } else if (n == 0 || n == 1) { return n; } else { return fibonacci(n – 1) + fibonacci(n – 2); } } }Kết quả:Nhập số nguyên dương n = 9 9 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21Bài 7. Chuyển đổi hệ cơ sốViết chương trình chuyển đổi một số tự nhiên ở hệ số 10 thành một số ở hệ cơ số B (1 <= B <= 32) bất kỳ. Giả sử hệ cơ số cần chuyển là 2 <= B <= 16. Số đại điện cho hệ cơ số B > 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.Bài này áp dụng cho các bài toán chuyển sang hệ nhị phân cơ số 2, hệ thập phân cơ số 10 và hệ thập lục phân (hexa) cơ số 16Hướng dẫn:

  • Tham khảo bảng ASCII để chuyển đổi kiểu char thành String. Hàm chr(55 + m) trong ví dụ sau:
  • Nếu m = 10 trả về chuỗi “A”.
  • Nếu m = 11 trả về chuỗi “B”.
  • Nếu m = 12 trả về chuỗi “C”.
  • Nếu m = 13 trả về chuỗi “D”.
  • Nếu m = 14 trả về chuỗi “E”.
  • Nếu m = 15 trả về chuỗi “F”.

Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static final char CHAR_55 = 55; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.println(“So ” + n + ” trong he co so 2 = ” + convertNumber(n, 2)); System.out.println(“So ” + n + ” trong he co so 16 = ” + convertNumber(n, 16)); } /** * chuyen doi so nguyen n sang he co so b * * @author vncoder.vn * @param n: so nguyen * @param b: he co so * @return he co so b */ public static String convertNumber(int n, int b) { if (n &lt 0 || b &lt 2 || b &gt 16 ) { return “”; } StringBuilder sb = new StringBuilder(); int m; int remainder = n; while (remainder &gt 0) { if (b &gt 10) { m = remainder % b; if (m &gt= 10) { sb.append((char) (CHAR_55 + m)); } else { sb.append(m); } } else { sb.append(remainder % b); } remainder = remainder / b; } return sb.reverse().toString(); } }Kết quả:Nhập số nguyên dương n = 235 So 235 trong he co so 2 = 11101011 So 235 trong he co so 16 = EBBài 8. Viết chương trình phân tích số nguyên n thành các thừa số nguyên tố trong java. Ví dụ: 100 = 2x2x5x5Code mẫu:package vn.vncoder; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); // phân tích số nguyên dương n List&ltInteger&gt listNumbers = phanTichSoNguyen(n); // in kết quả ra màn hình System.out.printf(“Kết quả: %d = “, n); int size = listNumbers.size(); for (int i = 0; i &lt size – 1; i++) { System.out.print(listNumbers.get(i) + ” x “); } System.out.print(listNumbers.get(size – 1)); } /** * Phân tích số nguyên thành tích các thừa số nguyên tố * * @param positiveInt * @return */ public static List&ltInteger&gt phanTichSoNguyen(int n) { int i = 2; List&ltInteger&gt listNumbers = new ArrayList&ltInteger&gt(); // phân tích while (n &gt 1) { if (n % i == 0) { n = n / i; listNumbers.add(i); } else { i++; } } // nếu listNumbers trống thì add n vào listNumbers if (listNumbers.isEmpty()) { listNumbers.add(n); } return listNumbers; } }Kết quả:Nhập số nguyên dương n = 75 Kết quả: 75 = 3 x 5 x 5Bài 9. Viết chương trình tính tổng của các chữ số của môt số nguyên n trong java. Số nguyên dương n được nhập từ bàn phím. Với n = 1234, tổng các chữ số: 1 + 2 + 3 + 4 = 10Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.printf(“Tổng của các chữ số ” + “của %d là: %d”, n, totalDigitsOfNumber(n)); } /** * Tính tổng của các chữ số của một số nguyên dương * * @param n: số nguyên dương * @return */ public static int totalDigitsOfNumber(int n) { int total = 0; do { total = total + n % 10; n = n / 10; } while (n &gt 0); return total; } }Kết quả:Nhập số nguyên dương n = 123 Tổng của các chữ số của 123 là: 6Bài 10. Viết chương trình kiểm tra một số n là số thuận nghịch trong java. Số nguyên dương n được nhập từ bàn phím.Hướng dẫn:Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch. Hãy liệt kê tất cả các số thuận nghịch có 6 chữa sốCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.println(n + ” là số thuận nghịch: ” + isThuanNghich(n)); System.out.print(“Nhập số nguyên dương m = “); int m = scanner.nextInt(); System.out.println(n + ” là số thuận nghịch: ” + isThuanNghich(m)); } /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ public static boolean isThuanNghich(int n) { // chuyển đổi số n thành một chuỗi String String numberStr = String.valueOf(n); // kiểm tra tính thuận nghịch int size = numberStr.length(); for (int i = 0; i &lt (size/2); i++) { if (numberStr.charAt(i) != numberStr.charAt(size – i – 1)) { return false; } } return true; } }Kết quả:Nhập số nguyên dương n = 1234321 1234321 là số thuận nghịch: true Nhập số nguyên dương m = 123456 1234321 là số thuận nghịch: falseBài 11. Hãy viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay không?Hướng dẫn:Số chính phương là số khi lấy căn bặc 2 có kết quả là nguyên:Dùng phương thức sqrt() để tính căn bậc 2 và kiểm tra n là số chính phương hay không?Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); boolean res = checkSquareNum(n); if(res) { System.out.println(n + ” là số chính phương”); } else { System.out.println(n + ” không phải là số chính phương”); } } public static boolean checkSquareNum(int n) { int temp = (int)Math.sqrt(n); if(temp*temp == n) { return true; } else { return false; } } }Kết quả:Nhập số nguyên dương n = 7 7 không phải là số chính phương Nhập số nguyên dương n = 9 9 là số chính phươngNhư vậy mình đã giới thiệu với các bạn một số bài toán Java liên quan đến số học, các bạn có thể tìm các cách giải khác hoặc vận dung để giải các bài tương tự, Chúc các bạn học tốt. Bài tiếp theo: Bài tập Java về mảng, dãy số >> vncoder logo

Trong bài này mình sẽ tổng hợp một số bài tập Java liên quan đến các bài toán số học, tìm UCLN, BCNN, số nguyên tố, giai thừa, luỹ thừa, giải phương trìnhTrong bài này mình sẽ tổng hợp một số bài tập Java liên quan đến các bài toán số học, tìm UCLN, BCNN, số nguyên tố, giai thừa, luỹ thừa, giải phương trìnhBài 1. Tính giai thừa Viết một chương trình tính giai thừa của một số nguyên dương n. Với n được nhập từ bàn phím. Ví dụ, n = 8 thì kết quả đầu ra phải là 1*2*3*4*5*6*7*8 = 40320.Hướng dẫn:Bài này chúng ta có thể sử dụng vòng lặp hoặc đệ quy để giải Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.print(“Nhập số nguyên dương n = “); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int gt = 1; for (int i = 1; i &lt= n; i++){ gt = gt * i; } System.out.println(“Giai thừa của ” + n + ” là: ” + gt); } }Code mẫu đệ quy:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.print(“Nhập số nguyên dương n = “); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); System.out.println(“Giai thừa của ” + n + ” là: ” + tinhGiaithua(n)); } /** * tinh giai thua */ public static long tinhGiaithua(int n) { if (n &gt 0) { return n * tinhGiaithua(n – 1); } else { return 1; } } }Kết quả:Nhập số nguyên dương n = 5 Giai thừa của 5 là: 120Bài 2. Kiểm tra số nguyên tốNhập vào một số nguyên dương n, kiểm tra xem n có phải là số nguyên tố hay không?Hướng dẫn:Nếu n < 2 thì n không phải là số nguyên tốNếu n >= 2 thì n là số nguyên tố nếu n chỉ chia hết cho một và chính nó. Ta dùng phòng for cho biến i chạy từ 2 tới căn bậc 2 của n, nếu n chia hết cho i thì n không phải là số nguyên tốCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.print(“Nhập số nguyên dương n = “); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if (n &lt 2) { System.out.println(“n không phải là số nguyên tố”); } boolean isSoNguyenTo = true; for (int i = 2; i &lt Math.sqrt(n); i++){ if(n%i == 0){ isSoNguyenTo = false; break; } } if (isSoNguyenTo) { System.out.println(“n là số nguyên tố”); } else { System.out.println(“n không phải là số nguyên tố”); } } }Kết quả:Nhập số nguyên dương n = 8 n không phải là số nguyên tố Nhập số nguyên dương n = 13 n là số nguyên tốBài 3. Liệt kê số nguyên tốViết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n. Số nguyên dương n được nhập từ bàn phímHướng dẫn:Bài này tương tự bài trên, tuy nhiên chúng ta sẽ dùng vòng for duyệt các số nguyên dượng từ 2 tới n, và kiểm tra từng số này bằng một hàm check số nguyên tốCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập n = “); int n = scanner.nextInt(); System.out.printf(“Tất cả các số nguyên tố nhỏ hơn %d là: \n”, n); if (n &gt= 2) { System.out.print(2); } for (int i = 3; i &lt n; i+=2) { if (isPrimeNumber(i)) { System.out.print(” ” + i); } } } /** * check so nguyen to * * @author VNCoder * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { // so nguyen n &lt 2 khong phai la so nguyen to if (n &lt 2) { return false; } // check so nguyen to khi n &gt= 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i &lt= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }Kết quả:Nhập n = 30 Tất cả các số nguyên tố nhỏ hơn 30 là: 2 3 5 7 11 13 17 19 23 29Bài 4. Tìm Ước chung lớn nhất (UCLN) và Bội chung nhỏ nhất (BCNN) của 2 số nguyên dương a và b nhập từ bàn phímHướng dẫn:Sử dụng Giải thuật Euclid, hay Thuật toán Euclid, là một giải thuật giúp tính ước số chung lớn nhất (ƯSCLN) của hai số một cách hiệu quả. Giải thuật này đã được biết đến từ khoảng năm 300 trước Công Nguyên. Nhà toán học Hy Lạp cổ Euclid đã viết giải thuật này trong cuốn sách toán nổi tiếng Elements.Ở dạng đơn giản nhất, thuật toán Euclid bắt đầu với cặp số nguyên dương, và tạo ra một cặp số nguyên dương mới bao gồm số nhỏ hơn và phần dư của phép chia hai số ban đầu. Quá trình được tiếp tục cho đến khi hai số trong cặp bằng nhau, giá trị lúc đó sẽ trở thành ước số chung lớn nhất của cặp số ban đầu.Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương a = “); int a = scanner.nextInt(); System.out.print(“Nhập số nguyên dương b = “); int b = scanner.nextInt(); // tính USCLN của a và b System.out.println(“USCLN của ” + a + ” và ” + b + ” là: ” + USCLN(a, b)); // tính BSCNN của a và b System.out.println(“BSCNN của ” + a + ” và ” + b + ” là: ” + BSCNN(a, b)); } /** * Tìm ước số chung lớn nhất (USCLN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return USCLN của a và b */ public static int USCLN(int a, int b) { if (b == 0) return a; return USCLN(b, a % b); } /** * Tìm bội số chung nhỏ nhất (BSCNN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return BSCNN của a và b */ public static int BSCNN(int a, int b) { return (a * b) / USCLN(a, b); } }Kết quả:Nhập số nguyên dương a = 8 Nhập số nguyên dương b = 20 USCLN của 8 và 20 là: 4 BSCNN của 8 và 20 là: 40Bài 5. Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0. Giải phương trình bậc hai thì chúng ta dùng công thức Delta đã học ở phổ thôngCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập hệ số bậc 2, a = “); float a = scanner.nextFloat(); System.out.print(“Nhập hệ số bậc 1, b = “); float b = scanner.nextFloat(); System.out.print(“Nhập hằng số tự do, c = “); float c = scanner.nextFloat(); // kiểm tra các hệ số if (a == 0) { if (b == 0) { System.out.println(“Phương trình vô nghiệm!”); } else { System.out.println(“Phương trình có một nghiệm: ” + “x = ” + (-c / b)); } return; } // tính delta float delta = b*b – 4*a*c; float x1; float x2; // tính nghiệm if (delta &gt 0) { x1 = (float) ((-b + Math.sqrt(delta)) / (2*a)); x2 = (float) ((-b – Math.sqrt(delta)) / (2*a)); System.out.println(“Phương trình có 2 nghiệm là: ” + “x1 = ” + x1 + ” và x2 = ” + x2); } else if (delta == 0) { x1 = (-b / (2 * a)); System.out.println(“Phương trình có nghiệm kép: ” + “x1 = x2 = ” + x1); } else { System.out.println(“Phương trình vô nghiệm!”); } } }Kết quả:Nhập hệ số bậc 2, a = 2 Nhập hệ số bậc 1, b = 3 Nhập hằng số tự do, c = -9 Phương trình có 2 nghiệm là: x1 = 1.5 và x2 = -3.0Bài 6. Dãy số FibonacciDãy số Fibonacci được định nghĩa như sau: F0 = 0, F1 = 1, F2 = 1, Fn = F(n-1) + F(n-2) với n >= 2. Ví dụ: 0, 1, 1, 2, 3, 5, 8, … Hãy viết chương trình tìm n số Fibonacci đầu tiên.Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.println(n + ” số đầu tiên của dãy số fibonacci: “); for (int i = 0; i &lt n; i++) { System.out.print(fibonacci(i) + ” “); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n &lt 0) { return -1; } else if (n == 0 || n == 1) { return n; } else { return fibonacci(n – 1) + fibonacci(n – 2); } } }Kết quả:Nhập số nguyên dương n = 9 9 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21Bài 7. Chuyển đổi hệ cơ sốViết chương trình chuyển đổi một số tự nhiên ở hệ số 10 thành một số ở hệ cơ số B (1 <= B <= 32) bất kỳ. Giả sử hệ cơ số cần chuyển là 2 <= B <= 16. Số đại điện cho hệ cơ số B > 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.Bài này áp dụng cho các bài toán chuyển sang hệ nhị phân cơ số 2, hệ thập phân cơ số 10 và hệ thập lục phân (hexa) cơ số 16Hướng dẫn:Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static final char CHAR_55 = 55; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.println(“So ” + n + ” trong he co so 2 = ” + convertNumber(n, 2)); System.out.println(“So ” + n + ” trong he co so 16 = ” + convertNumber(n, 16)); } /** * chuyen doi so nguyen n sang he co so b * * @author vncoder.vn * @param n: so nguyen * @param b: he co so * @return he co so b */ public static String convertNumber(int n, int b) { if (n &lt 0 || b &lt 2 || b &gt 16 ) { return “”; } StringBuilder sb = new StringBuilder(); int m; int remainder = n; while (remainder &gt 0) { if (b &gt 10) { m = remainder % b; if (m &gt= 10) { sb.append((char) (CHAR_55 + m)); } else { sb.append(m); } } else { sb.append(remainder % b); } remainder = remainder / b; } return sb.reverse().toString(); } }Kết quả:Nhập số nguyên dương n = 235 So 235 trong he co so 2 = 11101011 So 235 trong he co so 16 = EBBài 8. Viết chương trình phân tích số nguyên n thành các thừa số nguyên tố trong java. Ví dụ: 100 = 2x2x5x5Code mẫu:package vn.vncoder; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); // phân tích số nguyên dương n List&ltInteger&gt listNumbers = phanTichSoNguyen(n); // in kết quả ra màn hình System.out.printf(“Kết quả: %d = “, n); int size = listNumbers.size(); for (int i = 0; i &lt size – 1; i++) { System.out.print(listNumbers.get(i) + ” x “); } System.out.print(listNumbers.get(size – 1)); } /** * Phân tích số nguyên thành tích các thừa số nguyên tố * * @param positiveInt * @return */ public static List&ltInteger&gt phanTichSoNguyen(int n) { int i = 2; List&ltInteger&gt listNumbers = new ArrayList&ltInteger&gt(); // phân tích while (n &gt 1) { if (n % i == 0) { n = n / i; listNumbers.add(i); } else { i++; } } // nếu listNumbers trống thì add n vào listNumbers if (listNumbers.isEmpty()) { listNumbers.add(n); } return listNumbers; } }Kết quả:Nhập số nguyên dương n = 75 Kết quả: 75 = 3 x 5 x 5Bài 9. Viết chương trình tính tổng của các chữ số của môt số nguyên n trong java. Số nguyên dương n được nhập từ bàn phím. Với n = 1234, tổng các chữ số: 1 + 2 + 3 + 4 = 10Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.printf(“Tổng của các chữ số ” + “của %d là: %d”, n, totalDigitsOfNumber(n)); } /** * Tính tổng của các chữ số của một số nguyên dương * * @param n: số nguyên dương * @return */ public static int totalDigitsOfNumber(int n) { int total = 0; do { total = total + n % 10; n = n / 10; } while (n &gt 0); return total; } }Kết quả:Nhập số nguyên dương n = 123 Tổng của các chữ số của 123 là: 6Bài 10. Viết chương trình kiểm tra một số n là số thuận nghịch trong java. Số nguyên dương n được nhập từ bàn phím.Hướng dẫn:Một số được gọi là số thuận nghịch nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch. Hãy liệt kê tất cả các số thuận nghịch có 6 chữa sốCode mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); System.out.println(n + ” là số thuận nghịch: ” + isThuanNghich(n)); System.out.print(“Nhập số nguyên dương m = “); int m = scanner.nextInt(); System.out.println(n + ” là số thuận nghịch: ” + isThuanNghich(m)); } /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ public static boolean isThuanNghich(int n) { // chuyển đổi số n thành một chuỗi String String numberStr = String.valueOf(n); // kiểm tra tính thuận nghịch int size = numberStr.length(); for (int i = 0; i &lt (size/2); i++) { if (numberStr.charAt(i) != numberStr.charAt(size – i – 1)) { return false; } } return true; } }Kết quả:Nhập số nguyên dương n = 1234321 1234321 là số thuận nghịch: true Nhập số nguyên dương m = 123456 1234321 là số thuận nghịch: falseBài 11. Hãy viết chương trình nhập vào số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay không?Hướng dẫn:Số chính phương là số khi lấy căn bặc 2 có kết quả là nguyên:Dùng phương thức sqrt() để tính căn bậc 2 và kiểm tra n là số chính phương hay không?Code mẫu:package vn.vncoder; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(“Nhập số nguyên dương n = “); int n = scanner.nextInt(); boolean res = checkSquareNum(n); if(res) { System.out.println(n + ” là số chính phương”); } else { System.out.println(n + ” không phải là số chính phương”); } } public static boolean checkSquareNum(int n) { int temp = (int)Math.sqrt(n); if(temp*temp == n) { return true; } else { return false; } } }Kết quả:Nhập số nguyên dương n = 7 7 không phải là số chính phương Nhập số nguyên dương n = 9 9 là số chính phươngNhư vậy mình đã giới thiệu với các bạn một số bài toán Java liên quan đến số học, các bạn có thể tìm các cách giải khác hoặc vận dung để giải các bài tương tự, Chúc các bạn học tốt. Bài tiếp theo: Bài tập Java về mảng, dãy số >>

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!

Chia sẻ bài viết

  • Bài 1: Bài tập làm quen với Java
  • Bài 2: Bài tập Java Toán, Số học
  • Bài 3: Bài tập Java về mảng, dãy số

Chia sẻ bài viết