[ 05.18 ] JS - 약수 / 소수란 ? 반복문으로 약수 / 소수 구하기

약수란 ?

주어진 값을 1부터 주어진 값까지 나누었을때 똑 떨어지는 수를 약수라고 한다.
예를들면, 8이라는 값의 약수를 구해보자면
1, 2, 3, 4, 5, 6, 7, 8, 9 까지의 수에서
9를 1~9로 각 나누었을때 나머지가 0인 수는
1,3,9 총 이렇게 세개이다.

예제 1. 약수 나열해보기.

function factor(num){
  let f = '';
  for(let i = 1; i <=num; i++{
    if(num % i === 0){
      f+=String(i);
    }
  }
  return f
}

만약 num 이라는 매개변수 자리에 9 가 왔다면,
1부터 9가 될 때까지 반복하는데, (for문)
그 중 num인 9를 i번 반복하며 나누었을때 나머지가 0인 수만 골라준다.
그 중 충족하는 수만 나타내기 위해 숫자형태인 i 에 String 처리를 해주었다.
만약 최종 결과를 숫자로 표시하고 싶다면 return Number(f) 처리 해줘도 좋다.

소수란 ?

1과 자기자신 외에는 약수를 가지지않는 수이다. 쉽게말하면,
어떠한 수로도 딱 나누어 떨어지지 않는 수를 말한다.
예를 들어 8까지 소수를 구한다고 한다면,
1,2,3,4,5,6,7,8 중 1과 자기자신을 제외한 나머지 수로 나누어 지지 않는 숫자는 2,3,5,7 이 해당되게 된다.
4 = 2/2, 6 = 2/3, 8 = 4/2 .. 뭐 이런식으로..
*참고로 1은 소수가 아니다!

예제 2. 소수의 불리언 값 나타내기.

 let sqrt = Math.sqrt(num);
  if (num === 1) {
    return false;
  }
  if (num === 2) {
    return true;
  }
  if (num % 2 === 0) {
    return false;
  }
  for (let i = 3; i <= sqrt; i += 2) {
    if (num % i === 0) {
      return false;
    }
  }
  return true;

일단 소수의 정의를 내릴 때 , 한 번 생각해야할것!
1과 그 자신을 제외한 나머지 i 값의 나머지가 0으로 떨어지지 않을때 소수를 반환.
짝수는 무조건 소수가 아니고, 홀수 중에서도 제곱근의 값은 소수가 아니기 때문에
Math.sqrt(num) 처리를 해주었다.
만약 num 이 9라면 Math.sqrt(9) 는 3을 리턴하기 때문이다.
num 이 5나 6 등의 제곱근을 리턴하는 값이 정수로 떨어지지 않는 경우가 있는데, 사전에 parseInt() 처리를 해주어도 좋다.
하지만 결과는 불리언 값만 필요로 하니 딱히 쓰지않아도 결과물이 나온다.

좋은 웹페이지 즐겨찾기