Javascript 数组多维素数检查
我已经搜索过了,但是我没有找到我要问的东西。作为初学者和学习JavaScript的学生,我有一个问题。我知道如何检查一个数字是否是素数。这是我的问题:Javascript 数组多维素数检查,javascript,arrays,multidimensional-array,primes,Javascript,Arrays,Multidimensional Array,Primes,我已经搜索过了,但是我没有找到我要问的东西。作为初学者和学习JavaScript的学生,我有一个问题。我知道如何检查一个数字是否是素数。这是我的问题: numbers([ [5, 7, 10], [8, 2, 3], [44, 50, 22] ]) expected output: [ ['#', '#', 10], [8, '#', '#'], [44, 50, 22] ] 我需要的是:如果多维数组中有一个素数,我需要将其更改为#,如果没有,则不做任何更改。此任务不
numbers([
[5, 7, 10],
[8, 2, 3],
[44, 50, 22]
])
expected output:
[
['#', '#', 10],
[8, '#', '#'],
[44, 50, 22]
]
我需要的是:如果多维数组中有一个素数,我需要将其更改为#
,如果没有,则不做任何更改。此任务不需要内置函数,如.indexOf
、.include
、.findIndex
、.reduce
、.map
、.filter
,也不需要添加新参数或正则表达式。到目前为止,我得到的是:
function multidimensionalPrimesChecker(numbers)
{
for (var i = 0 ; i < numbers.length ; i++)
{
for (var j = 0 ; j < numbers[i].length ; j++)
{
if (numbers[i][j] % i === 0)
{
return false;
}
}
}
}
函数多维校验器(数字)
{
对于(变量i=0;i
我不知道该怎么解决这个问题了。请帮帮我。
感谢您的好意首先,您需要一个函数来检查一个数字是否为素数,因为您当前的检查
numbers[i][j]%i==0
仅检查numbers[i][j]
是否可被i
整除。下一种方法可以做到这一点:
function isPrime(num)
{
for(let i = 2, s = Math.sqrt(num); i <= s; i++)
if(num % i === 0) return false;
return num !== 1 && num !== 0;
}
为什么要使用
i
执行模块
操作?您希望完成什么?您可以使用array.map()。如果为true,则返回数字,如果为false,则返回一个#
。我想他不能使用此内置函数,因为他特别说“此任务不需要内置函数,如…map…”是的,我的讲座说我们不需要使用内置函数,因为他希望我们理解逻辑。谢谢,它可以工作。再次感谢你的解释。