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)}");
}
}