Guest User

Problem 41

a guest
May 11th, 2014
232
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Diagnostics;
  3. using System.Linq;
  4.  
  5. namespace Problem39
  6. {
  7.     class Program
  8.     {
  9.         static bool[] notPrime = new bool[7654321];
  10.         static void SetupPrimes()
  11.         {
  12.             notPrime[0] = true;
  13.             notPrime[1] = true;
  14.             for (var i = 7000000; i <= Math.Sqrt(notPrime.Length); i++)
  15.             {
  16.                 if (notPrime[i]) continue;
  17.                 for (var j = i * 2; j < notPrime.Length; j += i)
  18.                 {
  19.                     notPrime[j] = true;
  20.                 }
  21.             }
  22.         }
  23.         static bool IsPandigital(int input)
  24.         {
  25.             var n = input.ToString().Length;
  26.             var outarry = Array.ConvertAll(input.ToString().ToArray(), x => (int)x - 48);
  27.             var dict = new bool[10];
  28.             var flag = true;
  29.             foreach (var v in outarry)
  30.             {
  31.                 if (dict[v])
  32.                 {
  33.                     flag = false;
  34.                 }
  35.                 dict[v] = true;
  36.             }
  37.             for (var i = 1; i <= n; i++)
  38.             {
  39.                 if (!dict[i])
  40.                 {
  41.                     flag = false;
  42.                 }
  43.             }
  44.             return flag;
  45.         }
  46.         static void Main(string[] args)
  47.         {
  48.             var sw = new Stopwatch();
  49.             sw.Start();
  50.             SetupPrimes();
  51.             for (var i = 7654320; i > 0; i--)
  52.             {
  53.                 if (!IsPandigital(i) || notPrime[i]) continue;
  54.                 Console.WriteLine(i);
  55.                 break;
  56.             }
  57.             sw.Stop();
  58.             Console.WriteLine("Solution took {0}ms", sw.ElapsedMilliseconds);
  59.             Console.ReadLine();
  60.         }
  61.     }
  62. }
RAW Paste Data