Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menyemak sama ada nombor adalah nombor Goldbach di Jawa?

王林
Lepaskan: 2023-08-26 17:25:14
ke hadapan
692 orang telah melayarinya

Bagaimana untuk menyemak sama ada nombor adalah nombor Goldbach di Jawa?

Jika nombor boleh dinyatakan sebagai penambahan dua pasangan nombor perdana ganjil, maka nombor itu dipanggil nombor Goldbach.

Jika kita mengikut syarat di atas, maka kita boleh dapati setiap nombor genap yang lebih besar daripada 4 adalah nombor Goldbach, kerana ia mesti mempunyai sebarang pasangan nombor perdana ganjil. Tetapi nombor ganjil adalah tidak memuaskan kerana kita tahu bahawa jumlah dua nombor tidak boleh menjadi ganjil.

Dalam artikel ini, kita akan belajar cara menyemak sama ada nombor adalah nombor Goldbach menggunakan bahasa pengaturcaraan Java.

Tunjukkan kepada anda beberapa contoh

Contoh 1

Masukkan nombor sebagai 50.

Mari kita semak menggunakan logik nombor Goldbach.

Mencari pasangan nombor perdana ganjil, kami mendapat:

(3 , 47)
(7 , 43)
(13 , 37)
(19 , 31)
Salin selepas log masuk

Seperti yang kita perhatikan di sini, kita mendapat beberapa pasangan nombor perdana ganjil yang nilai tambahnya bersamaan dengan 50.

Oleh itu, 50 adalah nombor Goldbach.

Contoh 2

Masukkan nombor sebagai 47.

Mari kita uji menggunakan logik nombor Goldbach.

Mencari pasangan perdana ganjil, kami mendapat − Tiada pasangan perdana tersedia

Seperti yang kita perhatikan di sini, kita tidak mendapat pasangan perdana ganjil yang jumlahnya bersamaan dengan 47.

Oleh itu, 47 bukan nombor Goldbach.

Beberapa contoh nombor Goldbach yang lain termasuk 20, 52, 48, 122, dsb.

Algoritma

  • Langkah 1 - Dapatkan integer melalui permulaan atau input pengguna.

  • Langkah 2 - Kemudian isytiharkan dua tatasusunan yang menyimpan nombor perdana secara berturutan.

  • Langkah 3 - Kemudian mulakan lelaran di mana dua pasangan nombor perdana ganjil akan ditemui daripada dua tatasusunan, yang penambahannya adalah sama dengan nombor input.

  • Langkah 4 - Jika kita tidak mendapat sebarang pasangan nombor perdana ganjil, maka kita boleh mencetak bahawa nombor yang diberikan bukan nombor Goldbach.

  • Langkah 5 - Jika kita mendapat beberapa pasangan, maka kita hanya mencetak pasangan tersebut bersama-sama dengan mesej yang terhasil bahawa nombor input ialah nombor Goldbach.

Pelbagai kaedah

Kami menyediakan penyelesaian dengan cara yang berbeza.

  • Dengan menggunakan nilai input statik

  • Dengan menggunakan kaedah yang ditentukan pengguna

Mari kita lihat program dan outputnya satu persatu.

Kaedah 1: Gunakan nilai input statik

Dalam kaedah ini nilai integer akan dimulakan dalam atur cara dan kemudian dengan menggunakan algoritma kita boleh menyemak sama ada nombor adalah nombor Goldbach.

Contoh

import java.io.*;
import java.util.*;
public class Main {
   public static void main(String args[]) {
      //declare all the variables
      int i, j, n, temp, b=0, c=0, sum=0;

      //declare a variable which stores the input number
      //assign a value to it
      int inputNumber=30;

      //declare a temporary variable which stores the input value
      temp=inputNumber;

      //declare two arrays with the capacity equal to input number
      int array1[]=new int[inputNumber];
      int array2[]=new int[inputNumber];

      //check whether the number is even or
      if(inputNumber%2!=0) {
         //if the input is not even then print it is not a Goldbach number
         System.out.println(inputNumber + " is not a Goldbach number.");
      }

      //if the input is even then proceed with further calculations
      else {

         //initiate the loop for finding the prime numbers
         for(i=1; i<=inputNumber; i++) {
            for(j=1; j<=i; j++) {
               if(i%j==0) {
                  c++;
               }
            }

            //find the odd prime numbers
            if((c==2)&&(i%2!=0)) {

               //stores odd prime numbers into first array
               array1[b]=i;

               //stores odd prime numbers into second array
               array2[b]=i;

               //increments the value of b by 1
               b++;
            }
            c=0;
         }
         //print the odd prime number pairs
         System.out.println("Odd Prime Pairs are: ");

         //loop for printing the value of ArrayStoreException
         for(i=0; i<b; i++) {
            for(j=i; j<b; j++) {

               //find the sum of two odd prime numbers
               sum=array1[i]+array2[j];

               //condition for comparing the sum value with input number
               if(sum==temp) {

                  //print pair of odd prime numbers
                  System.out.print("(" + array1[i]+" , "+array2[j] + ")");
                  System.out.println();
               }
            }
         }
         //print the final result if it is Goldbach number
         System.out.println(temp+" is a Goldbach number.");
      }
   }
}
Salin selepas log masuk

Output

Odd Prime Pairs are:
(7 , 23)
(11 , 19)
(13 , 17)
30 is a Goldbach number.
Salin selepas log masuk

Kaedah 2: Gunakan kaedah yang ditentukan pengguna

Dalam kaedah ini, nilai integer dimulakan dan kemudian kami memanggil kaedah yang ditentukan pengguna dengan menghantar nombor input ini sebagai parameter.

Dalam kaedah ini kita akan menggunakan algoritma untuk menyemak sama ada nombor adalah nombor Goldbach.

Contoh

import java.io.*;
import java.util.*;
public class Main {
   public static void main(String args[]) {
      //declare a variable which stores the input number
      //assign a value to it
      int inp=98;
      if(checkGoldbach(inp)) {

         //if true it is Goldbach number
         System.out.println(inp+" is a Goldbach number.");
      } else {
         //if false it is not a Goldbach number
         System.out.println(inp + " is not a Goldbach number.");
      }
   }
   //define the user defined method
   static boolean checkGoldbach(int inputNumber) {

      //declare all the variables
      int i, j, n, temp, b=0, c=0, sum=0;

      //declare a temporary variable which stores the input value
      temp=inputNumber;

      //declare two arrays with the capacity equal to input number
      int array1[]=new int[inputNumber];
      int array2[]=new int[inputNumber];

      //check whether the number is even or
      if(inputNumber%2!=0) {
         return false;
      }

      //if the input is even then proceed with further calculations
      else {

         //initiate the loop for finding the prime numbers
         for(i=1; i<=inputNumber; i++) {
            for(j=1; j<=i; j++) {
               if(i%j==0) {
                  c++;
               }
            }

            //find the odd prime numbers
            if((c==2)&&(i%2!=0)) {

               //stores odd prime numbers into first array
               array1[b]=i;

               //stores odd prime numbers into second array
               array2[b]=i;

               //increments the value of b by 1
               b++;
            }
            c=0;
         }
         //print the odd prime number pairs
         System.out.println("Odd Prime Pairs are: ");

         //loop for printing the value of Arrays
         for(i=0; i<b; i++) {
            for(j=i; j<b; j++) {

               //find the sum of two odd prime numbers
               sum=array1[i]+array2[j];

               //condition for comparing the sum value with input number
               if(sum==temp) {

                  //print pair of odd prime numbers
                  System.out.print("(" + array1[i]+" , "+array2[j] + ")");
                  System.out.println();
               }
            }
         }
         return true;
      }
   }
}
Salin selepas log masuk

Output

Odd Prime Pairs are:
(19 , 79)
(31 , 67)
(37 , 61)
98 is a Goldbach number.
Salin selepas log masuk

Dalam artikel ini, kami melihat cara menyemak sama ada nombor adalah nombor Goldbach di Jawa menggunakan tiga kaedah berbeza.

Atas ialah kandungan terperinci Bagaimana untuk menyemak sama ada nombor adalah nombor Goldbach di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!