求1到10000之內的質數的和


第一種方法:

首先1不是質數,2是質數,質數是指只能被1和它本身整除的數。

因為除了2之外,偶數一定不是質數,所以只需要遍歷3到10000之間的奇數就可以了。

class Program
    {
        static void Main(string[] args)
        {
            int sum = 2;
            for (int i = 3; i < 10000; i += 2)
            {
                bool b = true;
                for (int j = 3; j <= i / 3; j += 2)//驗證到i/3如果再不能被整除,就一定是質數了
                {
                    if (i % j == 0)
                    {
                        b = false;
                        break;
                    }
                }
                if (b)
                {
                    sum += i;
                }

            }
            Console.WriteLine(sum);
            Console.ReadLine();
        }
    }

第二種方法:亮燈滅燈法,設有10000個燈,把不是質數的燈滅掉剩下的數就是質數。

class Program
    {
        static void Main(string[] args)
        {
            bool[] b = new bool[10000];//設置一萬盞燈
            for (int i = 0; i < b.Length; i++)
            {
                b[i] = true;//給所有燈,亮燈
            }
            b[0] = false;//給第一個數0滅燈
            b[1] = false;//給第二個數1滅燈
            for (int i = 2; i < 100; i++)
            {
                for (int j = 2; i*j < 10000; j++)
                {
                    b[i * j] = false;//i*j等於出來的都滅燈
                }
            }
            int sum = 0;
            for (int i = 0; i < b.Length; i++)
            {
                if (b[i])//如果這個數亮燈
                {
                    sum += i;
                }
            }
            Console.WriteLine(sum);
            Console.ReadLine();

        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM