Quick actions

cmd+k|ctrl+k

Navigation

Languages

Lowest common denominator

Snippet info

Language

Csharp

Visibility

public

Author

linus.aspelin

Created

2017-04-18T08:43:56Z

Updated

2017-05-05T11:42:31Z

using System;
using System.Linq;
using System.Collections.Generic;

class MainClass {
    static List<int> LowestCommonDenominator(int val, bool print = true) {
        var primes = new List<int>() {2,3};
        int i = val;
        for(i = 3; i <= val; i++) {
            if(primes.All(p => i % p != 0)) 
            {
                primes.Add(i);   
            }
        }
        i--;
        var values = new List<int>();
        while(i > 1) {
            var first = primes.First(p => i % p == 0);
            i /= first;
            values.Add(first);
        }
        if(print) {
            Console.WriteLine($"{new string(' ', 8-val.ToString().Length)}{val} = {string.Join("*", values)}");
        }
        return values;
    }
    static void Main() {
        foreach(var val in new int[]{2560,1440}) {
            LowestCommonDenominator(val);
        }
        Console.WriteLine();
        
        LowestCommonDenominator(2560/32/5);
        LowestCommonDenominator(1440/32/5);
        LowestCommonDenominator(1920/24/5);
        LowestCommonDenominator(1080/24/5);
        Console.WriteLine();
        var aVal = 2560;
        var bVal = 1440;
        var a = LowestCommonDenominator(aVal, false);
        var b = LowestCommonDenominator(bVal, false);
        while(a.Any(aa => b.Contains(aa))) {
            var x = a.First(aa => b.Contains(aa));
            a.Remove(x);
            b.Remove(x);
        }
        Console.WriteLine($"{new string(' ', 8-aVal.ToString().Length)}{aVal} = {string.Join("*", a)}");
        Console.WriteLine($"{new string(' ', 8-bVal.ToString().Length)}{bVal} = {string.Join("*", b)}");
    }
}
INFO