У меня есть цикл do / while, который генерирует два числа от 2 до 10, а затем проверяет их наибольший общий множитель.Если наибольший общий коэффициент не равен 1, он генерирует два разных числа, пока не найдет два, у которых нет общих факторов, кроме 1.
Это выполняется большую часть времени, но примерно каждый четвертый раз,это не в состоянии генерировать числа.Код кажется "застрявшим", но я не уверен, почему:
JAVASCRIPT
function randomBetween(min, max) {
var ceiling = max + 1;
return Math.floor(Math.random() * (ceiling - min)) + min;
}
function GenerateRandomNumberNoCommonFactorsWithAnother() {
var Numerator;
var Denominator;
var gcd = function gcd(a, b) {
return b ? gcd(b, a % b) : a;
};
do {
Numerator = randomBetween(2, 10);
Denominator = randomBetween(2, 10);
gcd = gcd(Numerator, Denominator);
} while (gcd != 1);
return {
Numerator: Numerator,
Denominator: Denominator,
}
}
var Test = GenerateRandomNumberNoCommonFactorsWithAnother();
$(".Test").html(Test.Numerator);
$(".Test2").html(Test.Denominator);
HTML
<span class="Test"></span>
<br>
<span class="Test2"></span>
JSFiddle: http://jsfiddle.net/190mvbzt/