Попытка сгенерировать число, которое не имеет общего множителя с другим числом, большим 1 (код включен) - PullRequest
0 голосов
/ 23 мая 2018

(Обновление: теперь исправлено! Работает JSFiddle: https://jsfiddle.net/ayd0Lx3t/30/)

Я пытаюсь сгенерировать случайное число между 3 и 9, которое не имеет никаких коэффициентов с 12:

function gcdfunction(a, b) {  // THIS FUNCTION GENERATES THE GREATEST COMMON DIVISOR BUT I'M GETTING A CONSOLE ERROR THAT { IS AN UNEXPECTED TOKEN 
   var gcd; 
    if ( ! b) {
        return a;
    }

    return gcd(b, a % b); // I'M ALSO GETTING AN ERROR THAT THIS IS UNDEFINED
};

function randomBetween (min, max) { //THIS FUNCTION GENERATES A RANDOM NUMBER BETWEEN A GIVEN MIN & MAX
  var ceiling = max + 1;
  return Math.floor(Math.random() * (ceiling - min)) + min;
}

function GenerateRandomNumber3to9Excluding (min, max, b) { 
  var random;
  var gcd;
  do {
     random = randomBetween(min, max); 
     gcd = gcdfunction(random, b); // THIS IS INTENDED TO CALL THE GCDFUNCTION DEFINED ABOVE
  } while((gcd > 1)); // IF THE GCD > 1, IT GENERATES ANOTHER RANDOM NUMBER
  alert(random);
}

var GenerateRandomNumber3to9No2 = GenerateRandomNumber3to9Excluding (3,9,12);

Вот ссылка: https://jsfiddle.net/ayd0Lx3t/23/

Я чувствую, что есть несколько быстрых решений, что я просто невидя; любой совет будет высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 23 мая 2018

Ваша проблема заключается в рекурсии: gcd - неопределенная переменная, объявленная в строке 2, вы, вероятно, хотите вызвать функцию gcdfunction

Вот ваш новый код

function gcdfunction(a, b) {  // THIS FUNCTION GENERATES THE GREATEST COMMON DIVISOR BUT I'M GETTING A CONSOLE ERROR THAT { IS AN UNEXPECTED TOKEN 
   var gcd; 
    if ( ! b) {
        return a;
    }

    return gcdfunction(b, a % b); // I'M ALSO GETTING AN ERROR THAT THIS IS UNDEFINED
};

function randomBetween (min, max) { //THIS FUNCTION GENERATES A RANDOM NUMBER BETWEEN A GIVEN MIN & MAX
  var ceiling = max + 1;
  return Math.floor(Math.random() * (ceiling - min)) + min;
}

function GenerateRandomNumber3to9Excluding (min, max, b) { 
  var random;
  var gcd;
  do {
     random = randomBetween(min, max); 
     gcd = gcdfunction(random, b); // THIS IS INTENDED TO CALL THE GCDFUNCTION DEFINED ABOVE
  } while((gcd > 1)); // IF THE GCD > 1, IT GENERATES ANOTHER RANDOM NUMBER
  alert(random);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...