Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java ตรวจสอบเลขที่เป็นผลรวมของจำนวนเฉพาะ 2 ตัว (Goldbach-like)


ในบทความนี้ เราจะทำความเข้าใจวิธี ตรวจสอบว่าเลขใดเลขหนึ่งสามารถเขียนเป็นผลรวมของจำนวนเฉพาะ 2 ตัวได้หรือไม่

หลักการ: วนลูป i จาก 2 ถึง n/2 ตรวจสอบว่า i และ n-i เป็นจำนวนเฉพาะทั้งคู่หรือไม่

ตัวอย่าง Input และ Output

Input:

Input number : 43

Output:

The number can be expressed as sum of two prime numbers.
The possible solutions are :
43 = 2 + 41

อัลกอริธึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศตัวแปร my_input, i, boolean my_temp
ขั้นตอนที่ 3 - อ่านค่าจากผู้ใช้ หรือกำหนดค่าเริ่มต้น
ขั้นตอนที่ 4 - สร้างฟังก์ชัน IsPrime ตรวจสอบจำนวนเฉพาะ
ขั้นตอนที่ 5 - วนลูป i = 2 ถึง my_input/2 ถ้า IsPrime(i) และ IsPrime(my_input-i) จริง → พบคำตอบ
ขั้นตอนที่ 6 - แสดงคำตอบทั้งหมดที่พบ
ขั้นตอนที่ 7 - หยุด

ตัวอย่างที่ 1: รับค่าจากผู้ใช้

import java.util.Scanner;
public class SumOfPrimes {
    public static void main(String[] args) {
        int my_input, i;
        boolean my_temp = false;
        my_input = 43;
        System.out.println("Required packages have been imported");
        Scanner my_scanner = new Scanner(System.in);
        System.out.println("A reader object has been defined");
        System.out.print("Enter the number : ");
        my_input = my_scanner.nextInt();
        for (i = 2; i <= my_input / 2; ++i) {
            if (IsPrime(i)) {
                if (IsPrime(my_input - i)) {
                    System.out.println("The number can be expressed as sum of two prime numbers.");
                    System.out.println("The possible solutions are :");
                    System.out.printf("%d = %d + %d\n", my_input, i, my_input - i);
                    my_temp = true;
                }
            }
        }
        if (!my_temp)
            System.out.println(my_input + " cannot be expressed as the sum of two prime numbers.");
    }
    static boolean IsPrime(int num) {
        boolean my_prime = true;
        for (int i = 2; i <= num / 2; ++i) {
            if (num % i == 0) {
                my_prime = false;
                break;
            }
        }
        return my_prime;
    }
}

Output

Required packages have been imported
A reader object has been defined
Enter the number : 43
The number can be expressed as sum of two prime numbers.
All the possible solutions are :
43 = 2 + 41

ตัวอย่างที่ 2: กำหนดค่าไว้ล่วงหน้า

public class SumOfPrimes {
    public static void main(String[] args) {
        int my_input, i;
        boolean my_temp = false;
        my_input = 43;
        System.out.println("The number is defined as " + my_input);
        for (i = 2; i <= my_input / 2; ++i) {
            if (IsPrime(i)) {
                if (IsPrime(my_input - i)) {
                    System.out.println("The number can be expressed as sum of two prime numbers.");
                    System.out.println("The possible solutions are :");
                    System.out.printf("%d = %d + %d\n", my_input, i, my_input - i);
                    my_temp = true;
                }
            }
        }
        if (!my_temp)
            System.out.println(my_input + " cannot be expressed as the sum of two prime numbers.");
    }
    static boolean IsPrime(int num) {
        boolean my_prime = true;
        for (int i = 2; i <= num / 2; ++i) {
            if (num % i == 0) {
                my_prime = false;
                break;
            }
        }
        return my_prime;
    }
}

Output

The number is defined as 43
The number can be expressed as sum of two prime numbers.
All the possible solutions are :
43 = 2 + 41