✏️기록하는 즐거움
article thumbnail

Link

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력 > 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력 > 주어진 수들 중 소수의 개수를 출력한다.

| 예제 입력

4
1 3 5 7

| 예제 출력

3

 

제출

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

const num = input[1].trim().split(" ");
let count = 0;

for (let i = 0; i < input[0]; i++) {
  let arr = [];

  if (Number(num[i]) === 1) {
    continue;
  }

  for (let j = 2; j <= num[i]; j++) {
    num[i] % j === 0 && arr.push(j);
  }

  arr.length === 1 && count++;
}

console.log(count);

 

풀이과정

소수는 1보다 큰, 약수가 1과 자기 자신만 있는 자연수이다.

주어진 수를 num에 하나씩 저장하고, for문을 사용해서 각 num의 약수를 구해 1과 자기자신만 가진 소수의 개수를 출력하면 된다.

 

  • A의 약수를 구해보면 약수의 최대값은 A이다.
  • 따라서, num을 2부터 num까지 나누고, 나머지가 0이면 arr에 추가한다.
  • 그 중 arr의 길이가 1이면 약수가 1과 자기자신만 있는 경우이므로 count를 증가시킨다.

Comment

1도 소수에 포함해서 문제를 풀었더니 처음에 오답이 나왔다... ㅎㅎ

소수에 대해 정확하게 인지하지 못한 채로 문제를 풀었던 것.. !!

정보에 확신하지 못할 땐 찾아보고 진행해도 괜찮다 오답보다는 나으니까 :)

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!