const
AOper: array [0..3] of string = ('+', '-', '*', '/');
var
a, b, Oper: Integer;
r: Real;
begin
Randomize; // инициализация датчика случайных чисел
a := Random (1001);
b := Random (1001);
Oper := Random (4);
case Oper of
0: r := a + b;
1: r := a - b;
2: r := a * b;
3:if b <> 0 then begin
r := a / b;
end else begin
WriteLn ('Произошла ошибка при делении на ноль');
Exit;
end
else r := -1;
end;
WriteLn (a);
WriteLn (b);
WriteLn (Aoper [Oper]);
if (r >= 0) and (r - Trunc (r) = 0) then begin // если в результате получилось положительное целое число
WriteLn ('yes');
WriteLn (r :6 :0);
end else
WriteLn (' no');
ReadLn;
end.
Объяснение:
r - Trunc (r) // это выделение дробной части числа
Значение дроби можно вычислять так: начинаем с e = 0, затем обновляем значение e по формуле n / (n + e), уменьшая n, пока не получим 2 / (2 + ...). В конце прибавим к результату 2. Пример:

Все скучные операции с дробями оставим питону, пусть считает сам - у него для этого есть модуль fractions.
Знаменатели растут очень быстро - уже начиная с числа 13 знаменатель будет больше миллиарда.
Код (Python 3):
from fractions import Fraction
from itertools import count
n = int(input())
for k in count(3):
e = Fraction(0)
while k >= 2:
e = k / (k + e)
k -= 1
e += 2
a, b = e.numerator, e.denominator
if b > n:
print(a, b)
break
Пример ввода:
1000000000
Пример вывода:
6706022400 2467007773