6. 質因數
string s;
while ((s = Console.ReadLine()) != "")
{
var data = s.Split(' ');
int a = int.Parse(data[0]);
int b = int.Parse(data[1]);
int oa = a, ob = b;
int n = 2;
Dictionary<int, int> kv = new Dictionary<int, int>(); // n, times
while (a > 1)
{
if (a % n == 0)
{
kv.TryAdd(n, 0);
kv[n] = kv[n] + 1;
a /= n;
}
else n++;
}
for (global::System.Int32 i = 0; i < kv.Count; i++)
{
Console.Write($"{kv.ElementAt(i).Key}{(kv.ElementAt(i).Value == 1 ? "" : $"^{kv.ElementAt(i).Value}")}");
if (i != kv.Count - 1) Console.Write("*");
}
Console.Write(", ");
n = 2;
kv = new Dictionary<int, int>(); // n, times
while (b > 1)
{
if (b % n == 0)
{
kv.TryAdd(n, 0);
kv[n] = kv[n] + 1;
b /= n;
}
else n++;
}
for (global::System.Int32 i = 0; i < kv.Count; i++)
{
Console.Write($"{kv.ElementAt(i).Key}{(kv.ElementAt(i).Value == 1 ? "" : $"^{kv.ElementAt(i).Value}")}");
if (i != kv.Count - 1) Console.Write("*");
}
Console.Write(", ");
int gcd = 1;
for (int i = Math.Min(oa, ob); i > 0; i--)
{
if (oa % i == 0 && ob % i == 0)
{
gcd = i;
break;
}
}
Console.Write(gcd + ", ");
int ogc = gcd;
n = 2;
int suc = 1;
while (gcd > 1)
{
if (gcd % n == 0)
{
gcd /= n;
suc++;
}
else n++;
}
Console.WriteLine(ogc == 1 || suc > 2 ? "N" : "Y");
}Last updated