예제 #1
0
 static void Main(string[] args)
 {
     PrimeGenerator pg = new PrimeGenerator();
     int[] primes = pg.GetPrimesBelowOneMillion();
     int rlt = 1;
     int tmp = 1;
     foreach(int p in primes){
         tmp = tmp * p;
          if (tmp >= NUMCOUNT)
          {
              break;
          }
          rlt = tmp;
     }
     Console.WriteLine(rlt);
 }
예제 #2
0
 static void Main(string[] args)
 {
     PrimeGenerator pg = new PrimeGenerator();
     int[] primes = pg.GetPrimesBelowOneMillion();
     bool[] primeMark = pg.CheckPrimeNumber(1000000);
     for (int i = 0; i < primes.Length; i++)
     {
         int prime = primes[i];
         int[] digits = NumberUtils.SplitNumber(prime,1);
         for (int mark = 1; mark < ((1 << digits.Length) -  1); mark++)
         {
             int primeCount = 0;
             for (int n = 0; n < 10; n++)
             {
                 int[] markedDigits = ChangeMarkedDigits(digits, mark, n);
                 if (markedDigits[0] % 2 == 0 || markedDigits[0] % 5 == 0)
                     continue;
                 if (markedDigits[digits.Length - 1] == 0)
                     continue;
                 int num = MarkDigitsToNumber(markedDigits);
                 if (!primeMark[num])
                     continue;
                 primeCount++;
             }
             if (primeCount == 8)
             {
                 int result = int.MaxValue;
                 for (int n = 0; n < 10; n++)
                 {
                     int[] markedDigits = ChangeMarkedDigits(digits, mark, n);
                     if (markedDigits[0] % 2 == 0 || markedDigits[0] % 5 == 0)
                         continue;
                     if (markedDigits[digits.Length - 1] == 0)
                         continue;
                     int num = MarkDigitsToNumber(markedDigits);
                     if (!primeMark[num])
                         continue;
                     if (num < result)
                         result = num;
                 }
                 Console.WriteLine("Result is {0}", result);
                 return;
             }
             //Console.WriteLine(Convert.ToString(mark, 2));
         }
     }
 }
예제 #3
0
 static void Main(string[] args)
 {
     for (int i = 0; i < 10000; i++)
     {
         squares[i * i] = true;
     }
     squares[0] = false;
     PrimeGenerator pg = new PrimeGenerator();
     primes = pg.GetPrimesBelowOneMillion();
     primeTag = pg.CheckPrimeNumber(1000000);
     int squTwice = 0;
     int firstOdd = 0;
     bool pass = false;
     for (int i = 3; ; i += 2)
     {
         if (primeTag[i])
             continue;
         pass = false;
         foreach (int prime in primes)
         {
             if (i <= prime)
                 break;
             squTwice = i - prime;
             if (squTwice % 2 != 0)
                 continue;
             squTwice = squTwice / 2;
             if (!squares[squTwice])
                 continue;
             pass = true;
             break;
         }
         if (pass)
             continue;
         firstOdd = i;
         break;
     }
     Console.WriteLine(string.Format("Result is {0}", firstOdd));
 }