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.
Trong phần khai báo, hai biến
minDiffvànearestPrimeđược khởi tạo. BiếnminDiffđượ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 khinearestPrimelưu trữ giá trị của số nguyên tố gần nhất vớix.Trong vòng lặp for, mỗi phần tử
numtrong mảngarrđược kiểm tra xem có phải là số nguyên tố không thông qua hàmisPrime.Nếu
numlà số nguyên tố, ta tính sự khác biệtdiffgiữanumvàx.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ốnumvà số nguyênx. 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ênx.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ủaminDiffhay 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ênx. Trong trường hợp này, chúng ta cập nhật giá trị củaminDiffthànhdiff(để lưu trữ khoảng cách nhỏ nhất tới thời điểm hiện tại) vànearestPrimethànhnum(để lưu trữ số nguyên tố tương ứng với khoảng cách nhỏ nhất).Cuối cùng, sau khi lặp qua tất cả các phần tử trong mảng
arr,nearestPrimesẽ chứa giá trị của số nguyên tố gần nhất vớix.
.

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