永发信息网

求Csharp编程代码

答案:1  悬赏:70  手机版
解决时间 2021-04-05 08:51
  • 提问者网友:我们很暧昧
  • 2021-04-05 00:11
求Csharp编程代码
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-04-05 01:45
调用
Console.WriteLine(GoldbachConjecture(6, 100, 5, "{0}={1}+{2};"));

//哥德巴赫猜想
public static string GoldbachConjecture(int startNumber, int endNumber, int maxLength, string formatString)
{
StringBuilder result = new StringBuilder();
List primeNumbers = GetPrimeNumber(endNumber);
//排除2的数字
primeNumbers.RemoveAt(0);

//循环区间内的偶数
int index = 0;
for (int i = Math.Max(6, startNumber); i <= endNumber; i += 2)
{
//输出拆分后的结果
foreach (int primeNumber in primeNumbers)
{
//两数相加超出范围时退出循环
//if ((i - primeNumber) < 0)
//break;

//判断当前的偶数减去一个质数后,另一个值是否在质数列表中
if (!primeNumbers.Contains(i - primeNumber))
continue;
//输出指定格式
result.AppendFormat(formatString, i, primeNumber, i - primeNumber);
//只输出一次。如果要把所有可能都输出的话,请取消循环内第一行注释并注释下面这行。
break;
}

//每行输出 maxLength 个
if (++index % maxLength == 0)
{
result.AppendLine();
}
}
return result.ToString();
}

//获取所有小于 endNumber的素数(质数)
public static List GetPrimeNumber(int endNumber)
{
List primeNumbers = new List();
primeNumbers.Add(2);

for (int i = 3; i < endNumber; i += 2)
{
bool isPrimeNumber = true;
//判断当前值之前的质数判断能否整除
foreach (int primeNumber in primeNumbers)
{
//能整除则不是质数
if (i % primeNumber == 0)
{
isPrimeNumber = false;
break;
}
//平方根判断,减少运算次数
if (primeNumber > Math.Sqrt(i))
{
break;
}
}
//如果是质数
if (isPrimeNumber)
{
primeNumbers.Add(i);
}
}
return primeNumbers;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯