經典算法之哥德巴赫猜想

哥德巴赫猜想:任意一個大於6的偶數都可以寫成兩個素數的和(素數:除了1和它本身以外不再被其他的除數整除。

<span style="font-size:18px;">class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("請輸入一個大於6的偶數:");
            int intNum = Convert.ToInt32(Console.ReadLine());
            bool blFlag = ISGDBHArith(intNum);
            if (blFlag)
            {
                Console.WriteLine("{0}能寫成兩個素數的和,所以其符合哥德巴赫猜想。", intNum);

            }
            else
            {
                Console.WriteLine("猜想錯誤。");
            }
            Console.Read();
        }
        static bool IsPrimeNumber(int intNum)
        {

            bool blFlag = true;
            if (intNum == 1 || intNum == 2)
                blFlag = true;
            else
            {
                int sqr = Convert.ToInt32(Math.Sqrt(intNum));
                for (int i = sqr; i >= 2; i--)
                {
                    if (intNum % i == 0)
                    {
                        blFlag = false;
                    }
                }
            }
            return blFlag;
        }
        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);
                    bool bl2 = IsPrimeNumber(intNum - i);
                    if (bl1 & bl2)
                    {
                        Console.WriteLine("{0}={1}+{2}",intNum, i, intNum - i);
                        blFLag=true ;
                    }
                }
            }
            return blFLag;
        }
    }</span>
思想:1.將大於6的偶數拆成任意兩個數

     2.判斷這兩個數是否爲素數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章