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