示例#1
0
        static void Main(string[] args)
        {
            int max = 10000;

            int[] factorsSum = new int[max - 1];
            for (int i = 0; i < factorsSum.Length; i++)
            {
                SortedSet <int> tempFactors = ExtraNumbers.Factors(i + 2);
                for (int j = 0; j < tempFactors.Count - 1; j++)
                {
                    factorsSum[i] += tempFactors.ElementAt(j);
                }
            }

            int amicablesum = 0;

            for (int i = 0; i < factorsSum.Length; i++)
            {
                if (1 < factorsSum[i] && factorsSum[i] < max - 2)
                {
                    if (i + 2 == factorsSum[factorsSum[i] - 2] && factorsSum[i] != i + 2)
                    {
                        amicablesum += i + 2;
                    }
                }
            }

            Console.WriteLine(amicablesum);
            Console.ReadLine();
        }
示例#2
0
        static int DigitFactorialSum(int n)
        {
            int sum = 0;

            while (n > 0)
            {
                sum += (int)ExtraNumbers.Factorial(n % 10);
                n   /= 10;
            }
            return(sum);
        }
示例#3
0
        private static int LengthPrimes(int i, int j)
        {
            int counter = 0;

            while (ExtraNumbers.IsPrime(counter * counter + i * counter + j))
            {
                counter++;
            }

            return(counter);
        }
示例#4
0
        private static bool ConsecutiveFactors(int start, int noFactors)
        {
            for (int i = 0; i < noFactors; i++)
            {
                if (ExtraNumbers.PrimeFactors(start + i).Distinct().Count() != noFactors)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#5
0
        static bool IsAbundant(int number)
        {
            SortedSet <int> factors = ExtraNumbers.Factors(number);

            int sum = 0;

            for (int i = 0; i < factors.Count - 1; i++)
            {
                sum += factors.ElementAt(i);
            }

            return(sum > number);
        }
示例#6
0
        static void Main(string[] args)
        {
            List <string> permutations = ExtraNumbers.AllPermutations("7654321");

            foreach (string s in permutations)
            {
                if (ExtraNumbers.IsPrime(int.Parse(s)))
                {
                    Console.WriteLine(s);
                    break;
                }
            }
            Console.ReadLine();
        }
示例#7
0
        static void Main(string[] args)
        {
            long          sum          = 0;
            List <string> permutations = ExtraNumbers.AllPermutations("0123456789");

            foreach (string s in permutations)
            {
                if (Divisibilities(s))
                {
                    sum += long.Parse(s);
                }
            }
            Console.WriteLine(sum);
            Console.ReadLine();
        }
示例#8
0
        private static bool IsPandigitalProducts(int n)
        {
            SortedSet <int> factors = ExtraNumbers.Factors(n);

            for (int i = 0; i < factors.Count / 2; i++)
            {
                int product1 = factors.ElementAt(i);
                int product2 = factors.ElementAt(factors.Count - 1 - i);
                if (IsAllPandigital(n, product1, product2))
                {
                    return(true);
                }
            }

            return(false);
        }
示例#9
0
        static void Main(string[] args)
        {
            int numberOfFactors = 500;

            int foundFactors = 1;
            int counter      = 1;
            int triangle     = 1;

            while (foundFactors <= numberOfFactors)
            {
                triangle     = TriangleAt(counter);
                foundFactors = ExtraNumbers.Factors(triangle).Count;
                counter++;
            }
            Console.WriteLine(triangle);
            Console.Read();
        }
示例#10
0
        static void Main(string[] args)
        {
            int max = 2000000;

            bool[]     primes = ExtraNumbers.Sieve(max);
            BigInteger sum    = 0;

            for (int i = 0; i < primes.Length; i++)
            {
                if (!primes[i])
                {
                    sum += i + 2;
                }
            }
            Console.WriteLine(sum);
            Console.Read();
        }