Example #1
0
        static void Main(string[] args)
        {
            PrimeCalculator calc = new PrimeCalculator();
            calc.GetAllPrimes(10000);
            for (int n = 1000; n < 10000; n++)
            {
                int d1 = n % 10;
                int d2 = (n / 10) % 10;
                int d3 = (n / 100) % 10;
                int d4 = n / 1000;

                var permutations = Permutator.Permutate(new int[] {d1, d2, d3, d4}.ToList());
                var numbers = new List<int>();
                foreach (var perm in permutations)
                {
                    var num = perm[0] + perm[1] * 10 + perm[2] * 100 + perm[3] * 1000;
                    if (calc.IsPrime((ulong)num) && !numbers.Contains(num) && num>999 && num>=n)
                        numbers.Add(num);
                }
                numbers.Sort();

                for (int i = 1; i < numbers.Count-1; i++)
                {
                    for (int j = i+1; j < numbers.Count; j++)
                    {
                        if (numbers[j]-numbers[i]==numbers[i]-numbers[0])
                            Console.Write("{0}{1}{2}\n", numbers[0], numbers[i], numbers[j]);
                    }
                }
            }
        }
Example #2
0
        public string Run()
        {
            var pe = new PrimeEnumerator();

            string result = "";
            var    pc     = new PrimeCalculator();

            var query = from p in pe.SkipWhile(p => p < 1000).TakeWhile(p => p < 10000)
                        let digits = DigitHelper.SplitDigits(p).ToList()
                                     let permutations = new Permutations <int>(digits)
                                                        let backToDigits =
                from perm in permutations
                let digit = (int)DigitHelper.ConvertToNumber(perm)
                            where digit != p && PrimeCalculator.IsPrime(digit) //pc.IsPrimeCached(digit) //
                            select digit
                            select new { p, Permutations = backToDigits };

            var permutationsGreaterThanP = from pair in query
                                           let perms = from perm in pair.Permutations where perm > pair.p select perm
                                                       where perms.Any()
                                                       select new { pair.p, perms };

            var outputs = from pair in permutationsGreaterThanP
                          from perm in pair.perms
                          let k = perm + perm - pair.p
                                  where pair.perms.Contains(k)
                                  select String.Join("", pair.p, perm, k);

            return(outputs.ElementAt(_count));
        }
Example #3
0
        static void Main(string[] args)
        {
            ulong MAX = (ulong)1e14;
            ulong result = 0;
            PrimeCalculator calc = new PrimeCalculator();
            calc.GetAllPrimes_Atkin((ulong)Math.Sqrt(MAX));

            Stack<ulong> candidates = new Stack<ulong>();

            for (ulong i = 1; i < 10; i++)
            {
                candidates.Push(i);
            }

            while (candidates.Count > 0)
            {
                var num = candidates.Pop();
                var sumDigits = SumDigits(num);
                if (num % sumDigits > 0)
                    continue;

                bool isStrong = calc.IsPrime(num / sumDigits);
                if (isStrong)
                {
                    for (ulong i = 0; i < 10; i++)
                    {
                        var tmp = AddDigit(num, i);
                        if (tmp>MAX)
                            break;
                        if (calc.IsPrime(tmp))
                            result += tmp;
                    }
                }
                for (ulong i = 0; i < 10; i++)
                {
                    var tmp = AddDigit(num, i);
                    if (tmp > MAX)
                        break;

                    candidates.Push(tmp);
                }

            }

            Console.WriteLine(result);
        }
Example #4
0
        public IEnumerator <int> GetEnumerator()
        {
            int x = 1;

            while (true)
            {
                x++;
                if (PrimeCalculator.IsPrime(x))
                {
                    yield return(x);
                }
            }
        }
Example #5
0
        public static bool Check(List<ulong> primes, PrimeCalculator calculator)
        {
            int len = primes.Count;
            ulong len2 = checked((ulong)Math.Pow(2, len));

            for (ulong i = 0; i < len2; i++)
            {
                ulong mul1 = 1;
                ulong mul2 = 1;
                ulong tmp = i;
                for (int j = 0; j <= len/2; j++)
                {
                    if (tmp % 2 == 0)
                        mul1 *= primes[j];
                    else
                        mul2 *= primes[j];
                    tmp /= 2;
                }
                if (!calculator.IsPrime(mul1+mul2))
                    return false;
            }

            return true;
        }
        public void IsNotPrimeTest()
        {
            int notPrime = 9;

            Assert.IsFalse(PrimeCalculator.IsPrime(notPrime));
        }
        public void IsPrimeTestOne()
        {
            int prime = 2;

            Assert.IsTrue(PrimeCalculator.IsPrime(prime));
        }