JavaScript Prime数字

时间:2015-06-15 00:40:57

标签: javascript random generator primes

在JavaScript中,如果我使用名为isPrime的布尔函数,然后将整数作为参数,如果参数为a,则如何生成100个随机数并显示检查每个随机数的结果以获得素数素数是多少?出于某种原因,我被卡住了..

到目前为止,我有这个:

function isPrime(number) {
    var start = 2;
    while (start <= Math.sqrt(number)) {
        if (number % start++ < 1) return false;
    }
    return number > 1;
}

2 个答案:

答案 0 :(得分:1)

  

我将如何生成100个随机数

使用Math.random()功能。我假设你想要在某个时间间隔内使用随机整数,所以你可以使用这样的函数:

function randomList(n, min, max) {
  var list = [];
  for(var i = 0; i < n; i++) {
    list.push(Math.floor(min + Math.random() * (max - min)));
  }
  return list;
}

要生成0到250之间的100个随机数,您可以调用

randomList(100, 0, 250)
  

并显示检查每个素数的结果

循环显示您生成的随机数,并使用isPrime函数检查每个数字的素数:

var list = randomList(100, 0, 250);
for(var i = 0; i < list.length; i++) {
  var num = list[i];
  console.log(num + (isPrime(num) ? " is prime." : " is not prime."));
}

答案 1 :(得分:0)

您想要使用随机数生成:

 Math.random();

这只会给你一个像0.8656630991026759这样的数字 现在随机数的限制是多少? 0到100或其他一些限制因此您可以简单地将此数字乘以更高的限制。

例如,

Math.random()* 100应该给我一个从0到100的随机数。

现在检查数字是否为素数。以下是isprime的两个例子:

// This version has the fewest lines of code - but is very slow.
// It checks if n is dividible by every integer 2, 3, 4, 5 ... 
// up to sqrt(n)

function isPrime1(n) {
 if (isNaN(n) || !isFinite(n) || n%1 || n<2) return false; 
 var m=Math.sqrt(n);
 for (var i=2;i<=m;i++) if (n%i==0) return false;
 return true;
}

// The next version is better: it checks the divisor 2 separately;
// then, it proceeds to check odd divisors only, from 3 up to sqrt(n).
// At most half of the numbers between 3 and sqrt(n) are checked.

function isPrime2(n) {
 if (isNaN(n) || !isFinite(n) || n%1 || n<2) return false; 
 if (n%2==0) return (n==2);
 var m=Math.sqrt(n);
 for (var i=3;i<=m;i+=2) {
  if (n%i==0) return false;
 }
 return true;
} 

查看此链接以获取有关isprime功能的更多信息 来源:http://www.javascripter.net/faq/numberisprime.htm