哥德巴赫猜測算法c#實現方法

using System;ide

using System.Collections.Generic;spa

using System.Linq;.net

using System.Text;code


namespace GDBHArithstring

{it

    class Programio

    {class

        #region  判斷一個數是不是素數變量

        /// <summary>循環

        /// 判斷一個數是不是素數

        /// </summary>

        /// <param name="intNum">要判斷的數</param>

        /// <returns>若是是,返回true,不然,返回false</returns>

        static bool IsPrimeNumber(int intNum)

        {

            bool blFlag = true;                 //標識是不是素數

            if (intNum == 1 || intNum == 2)     //判斷輸入的數字是不是1或者2

                blFlag = true;                  //爲bool類型變量賦值

            else

            {

                int sqr = Convert.ToInt32(Math.Sqrt(intNum));   //對要判斷的數字進行開方運算

                for (int i = sqr; i >= 2; i--)  //從開方後的數進行循環

                {

                    if (intNum % i == 0)        //對要判斷的數字和指定數字進行求餘運算

                    {

                        blFlag = false;         //若是餘數爲0,說明不是素數

                    }

                }

            }

            return blFlag;                      //返回bool型變量

        }

        #endregion


        #region 判斷一個數是否符合哥德巴赫猜測

        /// <summary>

        /// codego.net/1/1/1/判斷一個數是否符合哥德巴赫猜測

        /// </summary>

        /// <param name="intNum">要判斷的數</param>

        /// <returns>若是符合,返回true,不然,返回false</returns>

        static bool ISGDBHArith(int intNum)

        {

            bool blFlag = false;                //標識是否符合哥德巴赫猜測

            if (intNum % 2 == 0 && intNum > 6)  //對要判斷的數字進行判斷

            {

                for (int i = 1; i <= intNum / 2; i++)

                {

                    bool bl1 = IsPrimeNumber(i);             //判斷i是否爲素數

                    bool bl2 = IsPrimeNumber(intNum - i);    //判斷intNum-i是否爲素數

                    if (bl1 & bl2)

                    {

                        //輸出等式

                        Console.WriteLine("{0}={1}+{2}", intNum, i, intNum - i);

                        blFlag = true;          //符合哥德巴赫猜測

                    }

                }

            }

            return blFlag;                      //返回bool型變量

        }

        #endregion


        static void Main(string[] args)

        {

            Console.WriteLine("輸入一個大於6的偶數:");          //提示輸入信息

            int intNum = Convert.ToInt32(Console.ReadLine());   //記錄輸入的數字

            bool blFlag = ISGDBHArith(intNum);                  //判斷是否符合哥德巴赫猜測

            if (blFlag)                                         //若是爲true,說明符合,並輸出信息

            {

                Console.WriteLine("{0}能寫成兩個素數的和,因此其符合哥德巴赫猜測。", intNum);

            }

            else

            {

                Console.WriteLine("猜測錯誤。");

            }

            Console.ReadLine();

        }

    }

}

相關文章
相關標籤/搜索