Exemplo n.º 1
0
            private static Factorization PrimeFactors(long number)
            {
                var  factors = new Factorization();
                long num     = number;

                foreach (var prime in s_primes)
                {
                    if (num % prime != 0)
                    {
                        continue;
                    }
                    int ex = 0;
                    while (num % prime == 0)
                    {
                        num /= prime;
                        ex++;
                    }
                    factors.Add(prime, ex);
                    if (num == 1)
                    {
                        return(factors);
                    }
                }
                factors.Add(num, 1);
                return(factors);
            }
Exemplo n.º 2
0
 public Factorization MultiplyBy(Factorization by)
 {
     foreach (var(prime, exp) in by)
     {
         if (!this.ContainsKey(prime))
         {
             this.Add(prime, 0);
         }
         this[prime] += exp;
     }
     return(this);
 }
Exemplo n.º 3
0
            public Factorization DivideBy(Factorization by)
            {
                foreach (var(prime, exp) in by)
                {
                    if (!this.ContainsKey(prime) || this[prime] < exp)
                    {
                        throw new InvalidOperationException($"{this.Value()} is not divisible by {prime}");
                    }
                }

                foreach (var(prime, exp) in by)
                {
                    this[prime] -= exp;
                    if (this[prime] == 0)
                    {
                        this.Remove(prime);
                    }
                }
                return(this);
            }
Exemplo n.º 4
0
 public Factorization DivideBy(long by)
 {
     return(DivideBy(Factorization.Of(by)));
 }
Exemplo n.º 5
0
 public Factorization MultiplyBy(long by)
 {
     return(MultiplyBy(Factorization.Of(by)));
 }
Exemplo n.º 6
0
 public Factorization(Factorization other) : base(other)
 {
 }