using System; public class Test { public static int howmany(int x, int y) { int count = 0; for (int i = x; i < y; i++) { if (isSemiPrimer(i)) { count++; } } return count; } public static void Main() { DateTime dateStart = DateTime.Now; Console.WriteLine(howmany(1, 2000000)); TimeSpan span = DateTime.Now - dateStart; Console.WriteLine(span.TotalSeconds.ToString()); } public static bool isPrime(int x) { for (int i = 2; i <= Math.Sqrt((double)x); i++) { if (x % i == 0) { return false; } } return true; } public static bool isSemiPrimer(int x) { for (int i = 2; i <= Math.Sqrt((double)x); i++) { if (x % i == 0) { return isPrime(x / i) && isPrime(i); } } return false; } }
原文:http://blog.csdn.net/a120705230/article/details/19307247