Dictionary <int, int> Factorize(int n) { Dictionary <int, int> ret = new Dictionary <int, int>(); P.CalcPrimesUpToN((int)Math.Ceiling(Math.Sqrt(n))); for (int i = 0; i < P.Count; i++) { int p = P[i]; if (p == 1) { continue; } while (n % p == 0) { if (ret.ContainsKey(p)) { ret[p]++; } else { ret[p] = 1; } n /= p; } } return(ret); }
public override void Run() { long n = 600851475143; P.CalcPrimesUpToN(775123); for (int i = 0; i < P.Count; i++) { if ((P[i] < 775123) && (n % (long)P[i] == 0) && P[i] > Result) { Result = P[i]; } } }