第一種方法:
首先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(); } }
