Пример #1
0
        public long Solve()
        {
            var primes = new Utils.Prime(1000000L).PrimeList;

            var posiblePrimes = new List<long>();
            foreach (var prime in primes)
            {
                if (prime < 10)
                {
                    posiblePrimes.Add(prime);
                    continue;
                }

                if (this.IsAllOdd(prime))
                {
                    posiblePrimes.Add(prime);
                }
            }

            var count = 0;
            foreach (var posiblePrime in posiblePrimes)
            {
                var listOfPermutation = GetAllPermutation(posiblePrime);

                if (listOfPermutation.All(posiblePrimes.Contains))
                {
                    Console.WriteLine(posiblePrime);
                    count++;
                }
            }

            return count;
        }
Пример #2
0
        public long Solve()
        {
            var primesFactorisation = new Dictionary<long, long>();

            var primes = new Utils.Prime((long)Math.Sqrt(10) + 1).PrimeList;

            foreach (var prime in primes)
            {
                primesFactorisation.Add(prime, 0);
            }

            for (var n = UpperNumber - DownNumber; n <= UpperNumber; n++)
            {
                var number = n;
                foreach (var prime in primes)
                {
                    if (number == 1)
                        break;

                    while (number % prime == 0)
                    {
                        number = number / prime;
                        primesFactorisation[prime]++;
                    }
                }
            }

            return primesFactorisation.Sum(t => t.Key * t.Value);
        }
Пример #3
0
        public long Solve()
        {
            var max = 0L;
            var product = 0L;

            var primes = new Utils.Prime(1000L).PrimeList;
            var maxPrime = new Utils.Prime(1000000L).PrimeList;

            var posibleA = primes.Union(primes.Select(t => t * (-1)).ToList()).ToList();

            Console.WriteLine(primes.Count);
            Console.WriteLine(posibleA.Count);

            foreach (var a in posibleA)
            {
                for (var b = -999; b < 1000; b = b + 2)
                {
                    Func<long, long> func = n => (n * n) + (b * n) + a;

                    var currentMax = this.LongRow(func, maxPrime);

                    if (currentMax > max)
                    {
                        Console.WriteLine("{0} {1} {2}", max, a, b);
                        max = currentMax;
                        product = a * b;
                    }
                }
            }

            return product;
        }
Пример #4
0
        public long Solve()
        {
            var primes = new Utils.Prime(PrimeLimit).PrimeList;

            var solutions = new HashSet<long>();

            this.AddHammingNumber(1, primes, solutions);

            return solutions.Count;
        }
Пример #5
0
        public void GetDecomposition()
        {
            var primes = new Utils.Prime(1000L);

            for (int n = 1; n <= 1000; n++)
            {
                var resultComputeed = primes.GetDecomposition(n);
                var number = resultComputeed.Aggregate(1L, (result, t) => result * (long)Math.Pow(t.Key, t.Value));
                Assert.AreEqual(number, n);
            }
        }
Пример #6
0
        public long Solve()
        {
            var primes = new Utils.Prime(51L);
            var squereFree = new HashSet<long>();
            for (var row = 1; row <= 50; row++)
            {
                for (var number = 1; number <= row; number++)
                {
                    squereFree.Add(this.GetSquereFreeBinomilaNumber(number, row, primes));
                }
            }

            return squereFree.Sum();
        }
Пример #7
0
        public long Solve()
        {
            var number = 600851475143;

            var primes = new Utils.Prime(10000L).PrimeList;	// 10000 test

            foreach (var prime in primes.OrderByDescending(t => t))
            {
                if (number % prime == 0)
                    return prime;
            }

            return number;
        }
Пример #8
0
        public long Solve()
        {
            var primes = new Utils.Prime((long)Math.Ceiling(Math.Sqrt(Limit))).PrimeList;

            var sum = 2L;
            for (int i = 3; i <= Limit; i = i + 2)
            {
                if (this.IsPrime(i, primes))
                {
                    sum += i;
                }
            }
            return sum;
        }
Пример #9
0
        public long Solve()
        {
            var sum = 0L;
            var primes = new Utils.Prime((long)Math.Sqrt(Limit) * 10);

            var truncatableHarshadNumbers = new List<long> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            var nextTruncatableHarshadNumbers = new List<long>();
            var strongTruncatableHarshadNumbers = new List<long>();

            var digits = new List<int> { 1, 3, 7, 9 };

            for (var i = 1; i <= Math.Log10(Limit); i++)
            {
                foreach (var number in truncatableHarshadNumbers)
                {
                    for (var digit = 0; digit <= 9; digit++)
                    {
                        var newNumber = (number * 10) + digit;
                        if (this.IsHarshad(newNumber))
                        {
                            nextTruncatableHarshadNumbers.Add(newNumber);

                            if (this.IsStrongHarshad(newNumber, primes))
                            {
                                strongTruncatableHarshadNumbers.Add(newNumber);
                            }
                        }
                    }
                }

                truncatableHarshadNumbers = nextTruncatableHarshadNumbers.ToList();
                nextTruncatableHarshadNumbers.Clear();

                foreach (var number in strongTruncatableHarshadNumbers)
                {
                    foreach (var digit in digits)
                    {
                        var newNumber = (number * 10) + digit;
                        if ((newNumber < Limit) && (primes.IsPrimeCompute(newNumber)))
                        {
                            Console.WriteLine(newNumber);
                            sum += newNumber;
                        }
                    }
                }
                strongTruncatableHarshadNumbers.Clear();
            }

            return sum;
        }
Пример #10
0
        public long Solve()
        {
            var primeUtils = new Utils.Prime(Limit + 1);

            long sum = 0;
            foreach (var prime in primeUtils.PrimeList)
            {
                if (prime > Limit)
                    continue;

                if (this.IsPrimeGenerating(prime - 1, primeUtils))
                    sum += prime - 1;
            }
            return sum;
        }
Пример #11
0
        public long Solve()
        {
            Console.WriteLine("Start");

            var primes = new Utils.Prime(Limit);
            Console.WriteLine("Prime Konec");

            var output = 1L;

            foreach (var prime in primes.PrimeList.Where(t => t <= Limit))
            {
                var sumPower = GetPrimeMultipleFactorials(prime);

                output = (output * PowerMultiply(prime, sumPower)) % Modulo;
            }

            return output;
        }
Пример #12
0
        public long Solve()
        {
            var primeList = new Utils.Prime(1000L).PrimeList;

            for (var number = 10; number <= 100; number++)
            {
                var sum = 0;

                for (var lenght = 2; lenght <= (number + 1) / 2; lenght++)
                {
                    for (var minNumber = 0; primeList[minNumber] * lenght <= number; minNumber++)
                    {
                        sum += this.GetSumOfPosibilities(minNumber, lenght - 1, number - (int)primeList[minNumber], primeList);
                    }
                }

                if (sum >= 5000)
                {
                    return number;
                }
            }

            return 0;
        }
Пример #13
0
        public void MaxPrime()
        {
            var primes = new Utils.Prime(104395300L);

            Assert.AreEqual(104395301, primes.PrimeList.Max());
        }
Пример #14
0
 public long Solve()
 {
     var primes = new Utils.Prime(10001);
     return primes.PrimeList.Max(t => t);
 }