Ad
Code
Diff
  • using System.Collections.Generic;
    using System.Linq;
    
    //using FactorSort = (int PrimeFactor, int Exponent);
    
    public static class PrimeFactorization
    {
        public static IList<(int PrimeFactor, int Exponent)> Factorize(int number)
        {
            List<(int PrimeFactor, int Exponent)> factors = new()
            {
                DetermineFrequency(ref number, 2)
            };
            for (int i = 3; i*i <= number; i += 2)
                factors.Add(DetermineFrequency(ref number, i));
            if (number > 1) factors.Add((number, 1));
            factors.RemoveAll(f => f.Exponent == 0);
            return factors;
        }
    
        private static (int PrimeFactor, int Exponent) DetermineFrequency(ref int number, int factor)
        {
            var exponent = 0;
            while (number % factor == 0)
            {
                exponent++;
                number /= factor;
            }
            return (factor, exponent);
        }
    }
    • using System.Collections.Generic;
    • using System.Linq;
    • //using FactorSort = (int PrimeFactor, int Exponent);
    • public static class PrimeFactorization
    • {
    • public static IEnumerable<(int PrimeFactor, int Exponent)> Factorize(int number)
    • public static IList<(int PrimeFactor, int Exponent)> Factorize(int number)
    • {
    • List<(int PrimeFactor, int Exponent)> factors = new()
    • {
    • DetermineFrequency(ref number, 2)
    • };
    • for (int i = 3; i*i <= number; i += 2)
    • factors.Add(DetermineFrequency(ref number, i));
    • if (number > 1) factors.Add((number, 1));
    • factors.RemoveAll(f => f.Exponent == 0);
    • return factors;
    • }
    • private static (int PrimeFactor, int Exponent) DetermineFrequency(ref int number, int factor)
    • {
    • SortedDictionary<int, int> factors = new(); //[];
    • for (int i = 2; i <= number / 2 + 1; i++)
    • var exponent = 0;
    • while (number % factor == 0)
    • {
    • while (number % i == 0)
    • {
    • factors[i] = factors.GetValueOrDefault(i, 0) + 1;
    • number /= i;
    • }
    • exponent++;
    • number /= factor;
    • }
    • if (number > 1) factors[number] = factors.GetValueOrDefault(number, 0) + 1;
    • return from factor in factors select (factor.Key, factor.Value);
    • return (factor, exponent);
    • }
    • }
Code
Diff
  • using System.Collections.Generic;
    using System.Linq;
    
    public static class PrimeFactorization
    {
        public static IEnumerable<(int PrimeFactor, int Exponent)> Factorize(int number)
        {
            SortedDictionary<int, int> factors = new(); //[];
            for (int i = 2; i <= number / 2 + 1; i++)
            {
                while (number % i == 0)
                {
                    factors[i] = factors.GetValueOrDefault(i, 0) + 1;
                    number /= i;
                }
            }
            if (number > 1) factors[number] = factors.GetValueOrDefault(number, 0) + 1;
            return from factor in factors select (factor.Key, factor.Value);
        }
    }
    • def prime_factorization(input_number):
    • factors = []
    • for i in range(2, int(input_number**0.5) + 1):
    • while input_number % i == 0:
    • factors.append(i)
    • input_number //= i
    • if input_number > 1:
    • factors.append(input_number)
    • from collections import Counter
    • return sorted(Counter(factors).items())
    • using System.Collections.Generic;
    • using System.Linq;
    • public static class PrimeFactorization
    • {
    • public static IEnumerable<(int PrimeFactor, int Exponent)> Factorize(int number)
    • {
    • SortedDictionary<int, int> factors = new(); //[];
    • for (int i = 2; i <= number / 2 + 1; i++)
    • {
    • while (number % i == 0)
    • {
    • factors[i] = factors.GetValueOrDefault(i, 0) + 1;
    • number /= i;
    • }
    • }
    • if (number > 1) factors[number] = factors.GetValueOrDefault(number, 0) + 1;
    • return from factor in factors select (factor.Key, factor.Value);
    • }
    • }