/*Calculate answer*/ int topNumber = Convert.ToInt32(question); BitArray numbers = new BitArray(topNumber+1, true); for(int i = 2; i <= topNumber; i++) if(numbers[i]) { for(int j = i * 2; j < topNumber; j += i) numbers[j] = false; } int primes = 0; ArrayList primeList = new ArrayList(); int check = 1; for (int i = 2; i <= topNumber; i++) { if (numbers[i]) { if ((check = (check + 1) % 2) == 0) //Console.Out.WriteLine(i); primeList.Add(i); } } int addedDigits = 0; for (int i = 0; i < primeList.Count; i++) { int n = (int)primeList[i]; string s = n.ToString(); addedDigits += s[0] - '0'; addedDigits += s[s.Length - 1] - '0'; } int factorTotal = 0; int tmp = addedDigits; for (int i = 2; i <= tmp; i++) { if (tmp % i == 0) { factorTotal += i; tmp = tmp / i; i = 1; } } String ans = topNumber + ":" + addedDigits + ":" + factorTotal; Console.Out.WriteLine(ans); /*******/