在JavaScript中,如果我使用名为isPrime的布尔函数,然后将整数作为参数,如果参数为a,则如何生成100个随机数并显示检查每个随机数的结果以获得素数素数是多少?出于某种原因,我被卡住了..
到目前为止,我有这个:
function isPrime(number) {
var start = 2;
while (start <= Math.sqrt(number)) {
if (number % start++ < 1) return false;
}
return number > 1;
}
答案 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