Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Project_Euler_Problem_21
- {
- class Program
- {
- static void Main()
- {
- int input = 0;
- do
- {
- Console.Write("Max Value: ");
- } while (!int.TryParse(Console.ReadLine(), out input));
- Program MainProgram = new Program();
- int sum = MainProgram.FindAmicableSum(input);
- Console.WriteLine("\n" + sum);
- Console.ReadLine();
- }
- public int FindAmicableSum(int maxValue)
- {
- Number[] numberArray = new Number[maxValue + 1];
- for (int i = 0; i <= maxValue; i++)
- {
- numberArray[i] = new Number(i);
- }
- return numberArray.Select(x => x.Amicable == true ? x.Value : 0).Sum();
- }
- }
- public class Number
- {
- public Number(int value)
- {
- this.Value = value;
- DivisorSum = FindDivisorSum(value, 100);
- TestAmicablity();
- }
- public readonly int Value;
- public int DivisorSum { get; private set; }
- public bool Amicable { get; set; }
- private static int FindDivisorSum(int n, int tolerance)
- {
- List<int> divisorList = FindDivisors(n, tolerance);
- return divisorList.Sum();
- }
- private static List<int> FindDivisors(int n, int tolerance)
- {
- List<int> divisorList = new List<int>();
- for (int i = 1; i < n; i++)
- {
- if (n % i == 0)
- {
- divisorList.Add(i);
- }
- }
- return divisorList;
- }
- private void TestAmicablity()
- {
- Amicable = (Value == FindDivisorSum(DivisorSum, 100) && Value != DivisorSum);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement