Пример #1
0
        private long SumNumbersNotSumOfTwoAbundantNumbers(long input, bool Logging)
        {
            List <long>             abundantNumbers = new List <long>();
            Dictionary <long, long> abundantSums    = new Dictionary <long, long>();
            List <long>             numbers         = new List <long>();

            for (long i = 1; i <= input; i++)
            {
                if (Factors.GetNumberFactorType(i) == NumberFactorTypes.Abundant)
                {
                    abundantNumbers.Add(i);
                    foreach (var abundantNumber in abundantNumbers)
                    {
                        if (!abundantSums.ContainsKey(abundantNumber + i))
                        {
                            abundantSums.Add(abundantNumber + i, i);
                        }
                    }
                }

                if (abundantSums.ContainsKey(i))
                {
                    continue;
                }
                numbers.Add(i);
            }
            return(numbers.Distinct().Sum());
        }