利用C#驗(yàn)證哥德巴赫猜想的示例代碼
1.哥德巴赫猜想
哥德巴赫猜想(Goldbach’s Conjecture)是數(shù)學(xué)領(lǐng)域的一個(gè)著名猜想,由德國(guó)數(shù)學(xué)家克里斯蒂安·哥德巴赫(Christian Goldbach)在1742年提出。這個(gè)猜想的內(nèi)容是:任何一個(gè)大于2的偶數(shù)都可以表示為兩個(gè)質(zhì)數(shù)之和。換句話說(shuō),哥德巴赫猜想認(rèn)為,對(duì)于任意一個(gè)大于2的偶數(shù)n,存在兩個(gè)質(zhì)數(shù)p和q,使得n = p + q。
哥德巴赫猜想的證明對(duì)于數(shù)學(xué)領(lǐng)域具有重要意義。它的證明將有助于揭示質(zhì)數(shù)的分布規(guī)律,進(jìn)一步深化我們對(duì)數(shù)論的理解。然而,由于哥德巴赫猜想本身的復(fù)雜性,目前數(shù)學(xué)家們還在努力尋找證明它的方法。
2.驗(yàn)證哥德巴赫猜想
雖然哥德巴赫猜想的證明尚未找到,但我們可以通過(guò)編程來(lái)驗(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)識(shí)是否是素?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) //對(duì)要判斷的數(shù)字和指定數(shù)字進(jìn)行求余運(yùn)算
{
blFlag = false; //如果余數(shù)為0,說(shuō)明不是素?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)識(shí)是否符合哥德巴赫猜想
if (intNum % 2 == 0 && intNum > 2) //對(duì)要判斷的數(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,說(shuō)明符合,并輸出信息
{
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)代碼,希望對(duì)大家有所幫助
方法一
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開始至根號(hào)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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用Directoryinfo類獲得目錄信息和屬性的方法
這篇文章主要介紹了C#使用Directoryinfo類獲得目錄信息和屬性的方法,涉及C#操作目錄的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能
這篇文章主要介紹了基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
WPF中下拉框可作選擇項(xiàng)也可以作為只讀文本框使用的方法
這篇文章主要給大家介紹了關(guān)于WPF中下拉框可以選擇項(xiàng)也可以作為只讀文本框使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02
Unity 使用TexturePacker打包圖集的操作方法
這篇文章主要介紹了Unity 使用TexturePacker打包圖集的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
C#固定大小緩沖區(qū)及使用指針復(fù)制數(shù)據(jù)詳解
這篇文章主要為大家介紹了C#固定大小緩沖區(qū)及使用指針復(fù)制數(shù)據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C#開發(fā)Windows UWP系列之對(duì)話框MessageDialog和ContentDialog
這篇文章介紹了C#開發(fā)Windows UWP系列之對(duì)話框MessageDialog和ContentDialog,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06

