簡體   English   中英

數組多維素數檢查

[英]array multidimensional primes check

我搜索過,而且我什么都沒發現。 作為初學者和學習JavaScript的學生,我有一個問題。 我知道如何檢查數字是否是素數。 這是我的問題:

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;
            }
        }
    }
}

我不知道如何解決這個問題。 請幫幫我。 謝謝你的善意

首先,您需要一個函數來檢查數字是否為素數,因為您當前的校驗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;
}

現在,使用您的代碼,您可以檢測到這種情況,並在條件成立時替換為#

 const input = [ [5, 7, 10], [8, 2, 3], [44, 50, 22] ]; 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; } function multidimensionalPrimesChecker(numbers) { for (var i = 0; i < numbers.length; i++) { for (var j = 0; j < numbers[i].length; j++) { if (isPrime(numbers[i][j])) numbers[i][j] = "#"; } } return numbers; } let res = multidimensionalPrimesChecker(input); console.log(JSON.stringify(res)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM