소수여서 약수 배열의 length가 2 면 반환하는걸로했는데, 그렇게되면
소수가 엄청 큰 수일때 그 수를 다 반복하며 돌아야하므로 매우 비효율적이다.. 밑에 다른풀이를 참고하면, 2부터 돌음. 제곱근전까지! 효율적이다. 2부터 돌아서 만약 나머지가 0이면 바로 false를 반환한다.
function solution(nums) {
var answer = 0
for(let i=0;i<nums.length-2;i++){
for(let j=i+1;j<nums.length-1;j++){
for(let k=j+1;k<nums.length;k++){
// answer.push(nums[i],nums[j],nums[k],[i,j,k])
let 소수=nums[i]+nums[j]+nums[k]
console.log(nums[i]+nums[j]+nums[k])
let 약수=[]
for(let l=1;l<=소수;l++){
if(소수%l===0){
약수.push(l)
}
}
if(약수.length===2){
answer=answer+1
}
}
}
}
return answer;
}
function primecheck(n){
for(var i=2;i<=Math.sqrt(n);i++){
if(n%i == 0){
return false;
}
}
return true;
}
function solution(nums){
var cnt = 0;
for(var i=0;i<nums.length-2;i++){
for(var j=i+1;j<nums.length-1;j++){
for(var w=j+1;w<nums.length;w++){
if(primecheck(nums[i]+nums[j]+nums[w])){ cnt++;}
}
}
}
return cnt;
}