利用C#驗(yàn)證哥德巴赫猜想的示例代碼
1.哥德巴赫猜想
哥德巴赫猜想(Goldbach’s Conjecture)是數(shù)學(xué)領(lǐng)域的一個(gè)著名猜想,由德國數(shù)學(xué)家克里斯蒂安·哥德巴赫(Christian Goldbach)在1742年提出。這個(gè)猜想的內(nèi)容是:任何一個(gè)大于2的偶數(shù)都可以表示為兩個(gè)質(zhì)數(shù)之和。換句話說,哥德巴赫猜想認(rèn)為,對于任意一個(gè)大于2的偶數(shù)n,存在兩個(gè)質(zhì)數(shù)p和q,使得n = p + q。
哥德巴赫猜想的證明對于數(shù)學(xué)領(lǐng)域具有重要意義。它的證明將有助于揭示質(zhì)數(shù)的分布規(guī)律,進(jìn)一步深化我們對數(shù)論的理解。然而,由于哥德巴赫猜想本身的復(fù)雜性,目前數(shù)學(xué)家們還在努力尋找證明它的方法。
2.驗(yàn)證哥德巴赫猜想
雖然哥德巴赫猜想的證明尚未找到,但我們可以通過編程來驗(yàn)證這個(gè)猜想。以下是一個(gè)C#程序,用于驗(yàn)證哥德巴赫猜想:
// 驗(yàn)證哥德巴赫猜想(Goldbach's Conjecture) namespace _143 { class Program { #region 判斷一個(gè)數(shù)是否是素?cái)?shù) /// <summary> /// 判斷一個(gè)數(shù)是否是素?cái)?shù) /// </summary> /// <param name="intNum">要判斷的數(shù)</param> /// <returns>如果是,返回true,否則,返回false</returns> static bool Prime(int intNum) { bool blFlag = true; //標(biāo)識是否是素?cái)?shù) if (intNum == 1 || intNum == 2) //判斷輸入的數(shù)字是否是1或者2 blFlag = true; //為bool類型變量賦值 else { int sqr = Convert.ToInt32(Math.Sqrt(intNum)); for (int i = sqr; i >= 2; i--) //從開方后的數(shù)進(jìn)行循環(huán) { if (intNum % i == 0) //對要判斷的數(shù)字和指定數(shù)字進(jìn)行求余運(yùn)算 { blFlag = false; //如果余數(shù)為0,說明不是素?cái)?shù) } } } return blFlag; //返回bool型變量 } #endregion #region 判斷一個(gè)數(shù)是否符合哥德巴赫猜想 /// <summary> /// 判斷一個(gè)數(shù)是否符合哥德巴赫猜想 /// </summary> /// <param name="intNum">要判斷的數(shù)</param> /// <returns>如果符合,返回true,否則,返回false</returns> static bool GoldbachConjecture(int intNum) { bool blFlag = false; //標(biāo)識是否符合哥德巴赫猜想 if (intNum % 2 == 0 && intNum > 2) //對要判斷的數(shù)字進(jìn)行判斷 { for (int i = 1; i <= intNum / 2; i++) { bool bl1 = Prime(i); //判斷i是否為素?cái)?shù) bool bl2 = Prime(intNum - i);//判斷intNum-i是否為素?cái)?shù) if (bl1 & bl2) { Console.WriteLine("{0}={1}+{2}", intNum, i, intNum - i); blFlag = true; //符合哥德巴赫猜想 } } } return blFlag; //返回bool型變量 } #endregion static void Main(string[] args) { if (args is null) { throw new ArgumentNullException(nameof(args)); } Console.WriteLine("輸入一個(gè)大于2的偶數(shù):"); //提示輸入信息 int intNum = Convert.ToInt32(Console.ReadLine()); //記錄輸入的數(shù)字 bool blFlag = GoldbachConjecture(intNum); //判斷是否符合哥德巴赫猜想 if (blFlag) //如果為true,說明符合,并輸出信息 { Console.WriteLine("{0}能寫成兩個(gè)素?cái)?shù)的和,所以其符合哥德巴赫猜想。", intNum); } else { Console.WriteLine("猜想錯(cuò)誤。"); } Console.ReadLine(); } } }
結(jié)果:
輸入一個(gè)大于2的偶數(shù):
6
6=1+5
6=3+3
6能寫成兩個(gè)素?cái)?shù)的和,所以其符合哥德巴赫猜想。
輸入一個(gè)大于2的偶數(shù):
100
100=3+97
100=11+89
100=17+83
100=29+71
100=41+59
100=47+53
100能寫成兩個(gè)素?cái)?shù)的和,所以其符合哥德巴赫猜想。
輸入一個(gè)大于2的偶數(shù):
98
98=1+97
98=19+79
98=31+67
98=37+61
98能寫成兩個(gè)素?cái)?shù)的和,所以其符合哥德巴赫猜想。
3.方法補(bǔ)充
除了上文的代碼,小編還為大家大家整理了其他C#驗(yàn)證哥德巴赫猜想的相關(guān)代碼,希望對大家有所幫助
方法一
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace norm_program { class Program { static void Main(string[] args) { int n=0, i=0, j, k, p1, p2;//定義兩個(gè)素?cái)?shù)p1、p2,n為6~100之間能由兩個(gè)素?cái)?shù)表示的偶數(shù); for (p1 = 2; p1 < 101; p1++)//依據(jù)定義1不是素?cái)?shù),素?cái)?shù)p1從2開始; { for (p2 = 2; p2 < 101; p2++)//素?cái)?shù)p2從2開始實(shí)現(xiàn)遍歷; { //由素?cái)?shù)定義:素?cái)?shù)p僅能被1或其本身整除,即從2開始至根號n中有任一數(shù)能將n整除的數(shù)都不為素?cái)?shù); k = (int)Math.Sqrt(p2); for (j = 2; j <= k; j++) if (p2 % j == 0) break; if (j > k)//p2為素?cái)?shù),接著判斷p1; { k = (int)Math.Sqrt(p1); for (j = 2; j <= k; j++) if (p1 % j == 0) break; if (j > k)//p1、p2都為素?cái)?shù),判斷其和是否滿足條件; { n = p1 + p2; if (n >= 6 && n <= 100 && n % 2 == 0) { Console.Write("{0}={1}+{2}\t\t", n, p1, p2); i++; if(i % 5 == 0&&i!=0)//用以計(jì)數(shù)換行; Console.Write("\n"); } } } } } Console.ReadLine(); } } }
方法二
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 作業(yè)3_2 { class Program { static void Main(string[] args) { int zhishu(int a) { int t = 0; for (int i = 2; i <= a; i++) { if (a % i == 0) t++; } if (t == 1) return 1; else return 0; } string s = null; int zu = 0; for (int a = 6; a < 101;) { for (int b = 3; b <= a / 2; b++) if (zhishu(b) == 1 && zhishu(a - b) == 1) { s += a.ToString() + "=" + b.ToString() + "+" + (a - b).ToString() + " "; zu++; if (zu == 5) { Console.Write("{0}\r\n", s); s = null; zu = 0; } } a = a + 2; } Console.ReadLine(); } } }
到此這篇關(guān)于利用C#驗(yàn)證哥德巴赫猜想的示例代碼的文章就介紹到這了,更多相關(guān)C#哥德巴赫猜想內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用Directoryinfo類獲得目錄信息和屬性的方法
這篇文章主要介紹了C#使用Directoryinfo類獲得目錄信息和屬性的方法,涉及C#操作目錄的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04基于C#技術(shù)實(shí)現(xiàn)身份證識別功能
這篇文章主要介紹了基于C#技術(shù)實(shí)現(xiàn)身份證識別功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07WPF中下拉框可作選擇項(xiàng)也可以作為只讀文本框使用的方法
這篇文章主要給大家介紹了關(guān)于WPF中下拉框可以選擇項(xiàng)也可以作為只讀文本框使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02Unity 使用TexturePacker打包圖集的操作方法
這篇文章主要介紹了Unity 使用TexturePacker打包圖集的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08C#固定大小緩沖區(qū)及使用指針復(fù)制數(shù)據(jù)詳解
這篇文章主要為大家介紹了C#固定大小緩沖區(qū)及使用指針復(fù)制數(shù)據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12C#開發(fā)Windows UWP系列之對話框MessageDialog和ContentDialog
這篇文章介紹了C#開發(fā)Windows UWP系列之對話框MessageDialog和ContentDialog,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06