本文主要是介绍哥德巴赫猜想 C#,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这两天不知道为什么,总是在想一些儿时的问题,记得哥德巴赫猜想是小时候觉得很神秘的一种理论,现在再想这个问题,我就用C#来实现它,贴出来供大家一起研究下,有什么好的建议一块讨论讨论:
在这里有个问题我实现不了,就是计算机的无限大表示,要彻底证明这个理论,我想还是得借助无限大,这就不是我能证明的了,估计也不是我的计算机能承担住的负荷了。
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Generic;
using System.Text;
namespace 哥德巴赫猜想
{
class Program
{
static void Main(string[] args)
{
//哥德巴赫猜想大致可以分为两个猜想:
//1.每个不小于6的偶数都可以表示为两个奇素数之和;
//2.每个不小于9的奇数都可以表示为三个奇素数之和。
{
class Program
{
static void Main(string[] args)
{
//哥德巴赫猜想大致可以分为两个猜想:
//1.每个不小于6的偶数都可以表示为两个奇素数之和;
//2.每个不小于9的奇数都可以表示为三个奇素数之和。
int Number;
try
{
//循环输入
for (; ; )
{
Console.WriteLine("哥德巴赫猜想大致可以分为两个猜想:");
Console.WriteLine("1.每个不小于6的偶数都可以表示为两个奇素数之和;");
Console.WriteLine("2.每个不小于9的奇数都可以表示为三个奇素数之和。");
Console.Write("请随意输入一个大于7的数:" + "/n");
try
{
//循环输入
for (; ; )
{
Console.WriteLine("哥德巴赫猜想大致可以分为两个猜想:");
Console.WriteLine("1.每个不小于6的偶数都可以表示为两个奇素数之和;");
Console.WriteLine("2.每个不小于9的奇数都可以表示为三个奇素数之和。");
Console.Write("请随意输入一个大于7的数:" + "/n");
//接收关键字
Number = int.Parse(Console.ReadLine());
Number = int.Parse(Console.ReadLine());
//判断是哥德巴赫猜想的第一定理还是第二定理
if (Number >= 6 && Number%2 == 0)
{
//Console.Write(Number);
//Console.Write(Math.Sqrt(Number));
//Console.Write(IsPrimeNumber(Number));
//Console.Write("/n");
//IsPrimeNumber(Number);
Expression_1(Number);
//OuShu(Number);
}
else
{
if (Number >= 9 && Number % 2 == 1)
{
Expression_2(Number);
}
else
{
Console.WriteLine("输入有误");
break;
}
}
{
//Console.Write(Number);
//Console.Write(Math.Sqrt(Number));
//Console.Write(IsPrimeNumber(Number));
//Console.Write("/n");
//IsPrimeNumber(Number);
Expression_1(Number);
//OuShu(Number);
}
else
{
if (Number >= 9 && Number % 2 == 1)
{
Expression_2(Number);
}
else
{
Console.WriteLine("输入有误");
break;
}
}
}
}
catch (Exception)
{
Console.WriteLine("你输入的不是数字,请输入数字·····");
}
}
catch (Exception)
{
Console.WriteLine("你输入的不是数字,请输入数字·····");
}
}
//在输入一个数字之后,将所有小于它的符合第一定理的偶数以及表达式输出
public static bool OuShu(int m)
{
bool yes = false;
public static bool OuShu(int m)
{
bool yes = false;
for (int i = 0; i <= m; i++)
{
if (i % 2 == 0 && i > 6)
{
Console.WriteLine("偶数" + i + "可表示为:");
Console.Write("/n");
Expression_1(i);
yes = true;
}
}
return yes;
}
{
if (i % 2 == 0 && i > 6)
{
Console.WriteLine("偶数" + i + "可表示为:");
Console.Write("/n");
Expression_1(i);
yes = true;
}
}
return yes;
}
//判断素数并且以表达式的形式输出
public static bool Expression_1(int n)
{
bool yes = false;
if (n % 2 == 0 && n > 6)
{
for (int i = 1; i <= n / 2; i++)
{
bool b1 = IsPrimeNumber(i); //判断i是否为素数
bool b2 = IsPrimeNumber(n - i); //判断n-i是否为素数
if (b1 & b2)
{
Console.WriteLine("{0}={1}+{2}", n, i, n - i);
Console.Write("/n");
yes = true;
}
}
}
return yes;
}
public static bool Expression_1(int n)
{
bool yes = false;
if (n % 2 == 0 && n > 6)
{
for (int i = 1; i <= n / 2; i++)
{
bool b1 = IsPrimeNumber(i); //判断i是否为素数
bool b2 = IsPrimeNumber(n - i); //判断n-i是否为素数
if (b1 & b2)
{
Console.WriteLine("{0}={1}+{2}", n, i, n - i);
Console.Write("/n");
yes = true;
}
}
}
return yes;
}
//支持第二定理的简易证法
public static bool Expression_1_1(int n)
{
bool yes = false;
if (n % 2 == 0 && n > 6)
{
yes = true;
}
return yes;
}
public static bool Expression_1_1(int n)
{
bool yes = false;
if (n % 2 == 0 && n > 6)
{
yes = true;
}
return yes;
}
//证明第二定理并且输出表达式
public static bool Expression_2(int m)
{
bool yes = false;
if (m > 9 && m % 2 == 1)
{
for (int i = 1; i <= m / 2; i++)
{
bool b1 = IsPrimeNumber(i);
//bool b2 = Expression_1_1(m-i);
for (int j = 1; j < i / 2; j++)
{
bool b2 = IsPrimeNumber(j);
bool b3 = IsPrimeNumber(m - i - j);
if (b1 & b2 & b3)
{
Console.WriteLine("{0}={1}+{2}+{3}", m, i,j, m - i-j);
Console.WriteLine("/n");
yes = true;
}
}
}
}
public static bool Expression_2(int m)
{
bool yes = false;
if (m > 9 && m % 2 == 1)
{
for (int i = 1; i <= m / 2; i++)
{
bool b1 = IsPrimeNumber(i);
//bool b2 = Expression_1_1(m-i);
for (int j = 1; j < i / 2; j++)
{
bool b2 = IsPrimeNumber(j);
bool b3 = IsPrimeNumber(m - i - j);
if (b1 & b2 & b3)
{
Console.WriteLine("{0}={1}+{2}+{3}", m, i,j, m - i-j);
Console.WriteLine("/n");
yes = true;
}
}
}
}
return yes;
}
}
//判断素数
public static bool IsPrimeNumber(int m)
{
bool yes = false;
public static bool IsPrimeNumber(int m)
{
bool yes = false;
int j = 2;
for (; j <= Math.Sqrt(m); j++)
{
if (m % j == 0)
{
return yes;
}
{
if (m % j == 0)
{
return yes;
}
}
return yes = true;
}
}
}
}
}
}
这篇关于哥德巴赫猜想 C#的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!