Как отправить решение на SPOJ в JavaScript? - PullRequest
0 голосов
/ 11 апреля 2019

как я могу правильно представить свое решение?Я пробовал console.logs и возвраты, и все они терпели неудачу с некоторой ошибкой, такой как ошибка компиляции, NZEC, даже если это была реализация, скопированная и вставленная из переполнения стека ... Я пробовала с Node, JS Rihno и Spider Monkey, всеиз них не удалось ...

function isPrime(number) {
  if (number <= 1)
     print('NO');

  // The check for the number 2 and 3
  if (number <= 3)
     print('YES');

  if (number % 2 == 0 || number % 3 == 0)
     print('NO');

  for (var i = 5; i * i <= number; i = i + 6) {
    if (number % i == 0 || number % (i + 2) == 0)
       print('NO');
  }

   print('YES');
}

1 Ответ

0 голосов
/ 15 апреля 2019

Я решаю эту проблему следующим образом

let n = 1;
let answersArray;

(function () {
    const readline = require('readline');

    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });

    rl.question('', (input) => {
        n = Number(input) || 0
        prepareArray()
    });

    rl.on('line', (input) => {
        n = n - 1;
        const index = n
        isPrimeNumber(input, index)
        n === 0 ? showAnswer() : null
    });

})()


function prepareArray() {
    answersArray = new Array(n).fill(0);
}

function showAnswer() {
    for (let i = answersArray.length - 1; i >= 0; i--) {
        answersArray[i] ? console.log('TAK') : console.log('NIE')
    }
}

function isPrimeNumber(number, index) {
    let isPrime = true
    if (number < 2) isPrime = false
    else {
        for (let i = 2; i * i <= number; i++)
            if (number % i === 0) isPrime = false
    }
    answersArray[index] = isPrime
}
...