проверка массива многомерных простых чисел - PullRequest
0 голосов
/ 09 января 2019

Я искал и ничего не нашел о том, что собираюсь спросить. У меня есть вопрос как начинающего, так и студента, который изучает 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;
            }
        }
    }
}

И я понятия не имею, как это решить. Помоги мне, пожалуйста. И спасибо за вашу доброту

1 Ответ

0 голосов
/ 09 января 2019

Прежде всего, вам понадобится функция, чтобы проверить, является ли число простым или нет, поскольку ваша текущая проверка 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));
...