Javascript 试图生成一个与另一个大于1的数字(包括代码)不共享公因数的数字

Javascript 试图生成一个与另一个大于1的数字(包括代码)不共享公因数的数字,javascript,jquery,variables,Javascript,Jquery,Variables,(更新:现已修复!正在工作的JSFIDLE:) 我试图生成一个介于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

(更新:现已修复!正在工作的JSFIDLE:)

我试图生成一个介于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 generaterandomnumber3至9no2=generaterandomnumber3至9inclusive
(3,9,12)

以下是链接:


我觉得有一个我没有看到的快速解决方案;任何建议都将不胜感激。谢谢

您的问题在于递归: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);
}

“我还得到一个错误,这是未定义的”,这是因为它是未定义的,因为您将它声明为
var gcd并且没有为其设置任何值。因此您正在尝试生成
5
7
?只要做
Math.random()<0.5?5:7
。我该如何修改它?我刚刚添加了
vargcd以查看它是否可以解决未定义的错误。你介意推荐我如何解决这个问题吗?很明显,这里没有。用这样的例子来学习。@Paulpro不,我必须这样做,因为我要对其他各种数字重复使用它。调用gcd不是一个函数,您可能是指第7行的gcdfunction()