class Solution {
public int solution(int[] nums) {
int ans = 0;
for(int i =0; i<nums.length; i++){
for(int j =i+1; j<nums.length; j++){
for(int k = j+1; k<nums.length; k++){
int num = nums[i]+nums[j]+nums[k];
boolean chk = sosu(num);
if(chk ==true) ans++;
}
}
}
return ans;
}
public boolean sosu(int num){
boolean check = true;
for( int i=2; i<num/2+1; i++){
if(num % i ==0) {
check = false;
break;
}
}
return check;
}
}
3개의 숫자를 i,j,k로 만들어준다. num에 i+j+k값을 넣고 sosu(num)함수를 부른다.
sosu함수에서 check값을 true로 주고 num이 소수인지 판별하는 반복문을 돌린다.
만약 num % i가 0이면 소수가 아니기 때문에 false를 주고 반복문종료 후 리턴한다.
if문에 걸리지 않는다면 check에 true를 담아 리턴한다.
돌아가서 chk에 값이 담기고 그 값이 true 즉, 소수라면 ans++로 개수를세어준다.
sosu함수 안에 num/2+1는 약수 중 제일 작은 값이 자신의 절반값이기 때문이다.