public class FractionSubtraction
{
public static void main(String[] args)
{
int a, b, c, e, f, g, ans, deno;
String sent, num1, num2, fin;
int count = 20; //number of questions
String[] list = new String[count + 1];
for (int i=0; i < list.length; i++)
{
a = (int) (1 + Math.random() * 20);
b = (int) (1 + Math.random() * 20);
c = (int) (1 + Math.random() * 20);
e = (int) (Math.random() * 11);
f = (int) (Math.random() * 11);
while (b == 1)
{
b = (int) (1 + Math.random() * 20);
}
while (e < f)
{
e = (int) (Math.random() * 11);
f = (int) (Math.random() * 11);
}
while (a >= b)
{
a = (int) (1 + Math.random() * 20);
}
while (c >= b || (c == a && b != 2))
{
c = (int) (1 + Math.random() * 20);
}
while ((e*b + a) - (f*b + c) <= 0)
{
while (e < f)
{
e = (int) (Math.random() * 11);
f = (int) (Math.random() * 11);
}
while (a >= b)
{
a = (int) (1 + Math.random() * 20);
}
while (c >= b || (c == a && b != 2))
{
c = (int) (1 + Math.random() * 20);
}
}
g = 0;
ans = (e*b + a) - (f*b + c);
while (ans >= b)
{
ans = ans - b;
g++;
}
deno = b;
if (e > 0)
{
num1 = "" + e + " ";
} else
{
num1 = "";
}
if (f > 0)
{
num2 = "" + f + " ";
} else
{
num2 = "";
}
if (g > 0)
{
fin = "" + g + " ";
} else
{
fin = "";
}
if (ans > 0) //reduce fraction in final answer
{
for (int red = 2; red <= deno; red++)
{
while (ans%red == 0 && deno%red == 0)
{
ans = ans/red;
deno = deno/red;
}
}
sent = "" + num1 + a + "/" + b + " - " + num2 + c + "/" + b + " = " + fin + ans + "/" + deno;
} else
{
sent = "" + num1 + a + "/" + b + " - " + num2 + c + "/" + b + " = " + fin;
}
for (int j = 0; j < i; j++)
{
if (sent.equals(list[j])) // eliminate any repeated questions
{
i--;
break;
} else if (j == i -1)
{
list[i] = sent;
System.out.println(list[i]);
}
}
}
}
}