求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();

        }
    }

 

posted @ 2016-08-09 20:14  云晴  阅读(4914)  评论(0编辑  收藏  举报