我正在尝试获取C#中前1000个质数的总和,但我使用的代码非常慢,需要花费很多时间进行计算,到目前为止尚未返回有效的总和。

我对此并不陌生,我希望你们中的任何一个可以看看并帮助我提高代码效率,并让我知道我做错了什么。如果我在论坛规则方面做错了什么,也请告诉我。

在此先感谢您的宝贵时间!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            long sumOfPrime=0;

            Console.WriteLine("Calculating Sum of Prime");

            for (int i = 1, primeCounter = 0; primeCounter <= 1000; ++i)
            {
                if (!IsPrime(i))
                {
                    continue;
                }
                else
                {
                    primeCounter = +1;
                    sumOfPrime = +i;
                }
            }

            Console.WriteLine(sumOfPrime);
        }

        static bool IsPrime(int number)
        {
            if (number == 1)
            {
                return false;
            }

            if (number == 2)
            {
                return true;
            }

            for (int i = 2; i <= Math.Ceiling(Math.Sqrt(number)); ++i)
            {
                if (number % i == 0)
                {
                    return false;
                }
            }

            return true;
        }
    }
}

最佳答案

您的错误在于:

primeCounter = +1


每次都会重置计数器。我想你的意思是

primeCounter += 1


...增加它。甚至更好:

primeCounter++

10-08 01:57