[300]1978号小数点を探す



1978号探查小数。


質問する


プログラムを書き出して、与えられたN個の数の中で何個が小数であるかを見つけます.

入力


1行目の数字はNです.Nは100以下である.次はN個、数は1000以下の自然数です.

しゅつりょく


与えられた数のうちの少数の数を出力します.

コピー例入力1

4
1 3 5 7

コピー例出力1

3

コード#コード#

//---- 세팅 ----//
const fs = require('fs');
const stdin = (
  process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `\
4
1 3 5 7
`
).split('\n');

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

//---- 풀이 -----//

const t = Number(input());
const numberArr = input().split(' ').map(Number);

const isPrime = n => {
  if (n <= 1) return false;
  for (let i = 2; i * i <= n; i++) {
    // i * i <= n 을 i <= n / i 로 대체 가능
    if (n % i === 0) return false;
  }
  return true;
};

const primeArr = numberArr.filter(n => isPrime(n));

console.log(primeArr.length);

に答える


小数:1と自分だけの小数
繰り返し文の範囲

  • nの約数はnの半分を超えてはならない.i <= n / 2
  • i * i <= ni <= Math.sqrt(n)(より高速)
  • 小数をチェックできるかどうかについては、その値の平方根に基づいて、その値の平方根は対称であるため、平方根より小さい値だけをチェックすると、チェックするデータをチェックする必要のない平方根以下に減らすことができます.
    出典:https://www.it-note.kr/308[IT開発者コメント]