문제 : https://programmers.co.kr/learn/courses/30/lessons/12977
function Prime(num) {
if (num === 1 || num === 2 || num === 3 || num === 5 || num === 7) {
return true;
} else if (num % 2 && num % 3 && num % 5 && num % 7) {
return true;
}
}
function solution(arr) {
let cnt = 0;
for (let i = 0; i < arr.length; i += 1) {
for (let j = i + 1; j < arr.length; j += 1) {
for (let p = j + 1; p < arr.length; p += 1) {
const num = arr[i] + arr[j] + arr[p];
if (Prime(num)) {
cnt += 1;
}
}
}
}
return cnt;
}
console.log(solution([1, 2, 7, 6, 4])); // 4
function isPrime(num) {
if (num === 2) {
return true;
}
for (let i = 2; i <= Math.floor(Math.sqrt(num)); i += 1) {
if (num % i === 0) {
return false;
}
}
return true;
}
function solution(arr) {
let cnt = 0;
for (let i = 0; i < arr.length; i += 1) {
for (let j = i + 1; j < arr.length; j += 1) {
for (let p = j + 1; p < arr.length; p += 1) {
const num = arr[i] + arr[j] + arr[p];
//
if (isPrime(num)) {
cnt += 1;
}
//
}
}
}
return cnt;
}
console.log(solution([1, 2, 7, 6, 4])); // 4
function isPrime(num) {
// 1. 1은 소수가 아니다
if (num === 1) {
return false;
}
// 2. 제곱근이 1인 숫자는 무조건 소수다.
// 3. 해당 숫자를 "2~제곱근"으로 나눈 것 중 하나라도 나머지가 0이 나오면 소수가 아님.
for (let i = 2; i <= Math.sqrt(num); i += 1) {
if (num % i === 0) {
return false;
}
}
// 4. 나머지가 0이 나오는게 없으면, 소수다.
return true;
}
num / 제곱근( Math.sqrt(num) )
1 / 1
2 / 1.4142135623730951
3 / 1.7320508075688772
4 / 2
5 / 2.23606797749979
6 / 2.449489742783178
7 / 2.6457513110645907
8 / 2.8284271247461903
9 / 3
10 / 3.1622776601683795
11 / 3.3166247903554
12 / 3.4641016151377544
13 / 3.605551275463989
14 / 3.7416573867739413
15 / 3.872983346207417
16 / 4