Thứ Tư, 1 tháng 5, 2024

2.6: Tìm số nguyên tố gần x nhất

 

Dưới đây là chương trình Java để nhập vào một mảng và một số nguyên x, sau đó xác định số nguyên tố trong mảng đó có giá trị gần nhất với x:

import java.util.Scanner; public class Main { // Kiểm tra số nguyên tố public static boolean isPrime(int n) { if (n <= 1) { return false; } for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } // Tìm số nguyên tố gần nhất với x public static int findNearestPrime(int[] arr, int x) { int minDiff = Integer.MAX_VALUE; int nearestPrime = 0; for (int num : arr) { if (isPrime(num)) { int diff = Math.abs(num - x); if (diff < minDiff) { minDiff = diff; nearestPrime = num; } } } return nearestPrime; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Nhập mảng từ bàn phím System.out.print("Nhập số phần tử của mảng: "); int n = scanner.nextInt(); int[] arr = new int[n]; System.out.println("Nhập các phần tử của mảng:"); for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); } // Nhập số x từ bàn phím System.out.print("Nhập số x: "); int x = scanner.nextInt(); // Tìm số nguyên tố gần nhất với x trong mảng int nearestPrime = findNearestPrime(arr, x); // In kết quả if (nearestPrime != 0) { System.out.println("Số nguyên tố gần nhất với " + x + " trong mảng là: " + nearestPrime); } else { System.out.println("Không có số nguyên tố trong mảng."); } scanner.close(); } }

Phương thức findNearestPrime có nhiệm vụ tìm số nguyên tố trong mảng arr có giá trị gần nhất với số nguyên x.

  1. Trong phần khai báo, hai biến minDiffnearestPrime được khởi tạo. Biến minDiff được sử dụng để lưu trữ sự khác biệt tối thiểu giữa giá trị số nguyên tố và số x, trong khi nearestPrime lưu trữ giá trị của số nguyên tố gần nhất với x.

  2. Trong vòng lặp for, mỗi phần tử num trong mảng arr được kiểm tra xem có phải là số nguyên tố không thông qua hàm isPrime.

  3. Nếu num là số nguyên tố, ta tính sự khác biệt diff giữa numx.

  4. Dòng code int diff = Math.abs(num - x); tính toán sự khác biệt tuyệt đối giữa giá trị của số nguyên tố num và số nguyên x. Bằng cách này, chúng ta có thể biết được khoảng cách giữa các số nguyên tố và số nguyên x.

    Sau đó, dòng if (diff < minDiff) kiểm tra xem sự khác biệt này có nhỏ hơn giá trị hiện tại của minDiff hay không. Nếu có, có nghĩa là chúng ta đã tìm thấy một số nguyên tố gần hơn với số nguyên x. Trong trường hợp này, chúng ta cập nhật giá trị của minDiff thành diff (để lưu trữ khoảng cách nhỏ nhất tới thời điểm hiện tại) và nearestPrime thành num (để lưu trữ số nguyên tố tương ứng với khoảng cách nhỏ nhất).

  5. Cuối cùng, sau khi lặp qua tất cả các phần tử trong mảng arr, nearestPrime sẽ chứa giá trị của số nguyên tố gần nhất với x.

.

Không có nhận xét nào:

Đăng nhận xét