본문 바로가기

Algorithm/Programers - C++

[프로그래머스] 소수만들기

문제

풀이

#include <vector>
#include <iostream>
#include <cmath>
using namespace std;

bool sosu(int num) {
	if (num < 2) return false;
	int a = (int) sqrt(num);
	for (int i = 2; i <= a; i++) if (num % i == 0) return false;
	return true;
}

int solution(vector<int> nums) {
    int answer = 0;
    
    for(int i=0 ; i<nums.size()-2; i++){
        for(int j=i+1; j<nums.size()-1; j++){
            for (int z=j+1; z<nums.size(); z++){
                if(sosu(nums[i] + nums[j] + nums[z])) answer++;
            }
        }
    }

    return answer;
}

소수를 찾는 함수를 만들 때, 루트를 한번 씌우고 반복문을 사용하면 더 빠르게 소수를 판별할 수 있었다.

 

 

 


https://notepad96.tistory.com/entry/C-%EC%86%8C%EC%88%98-%ED%8C%90%EB%B3%84%ED%95%98%EA%B8%B0

 

C++ 소수 판별하기

1. 소수 판별 소수란 1보다 크며 1 이외의 자신으로만 나누어지는 수이다. 어떠한 수 n이 소수인지 판별하기 위하여 for문을 사용하여서 2부터 나누어 n-1까지의 수 중 나머지가 0이 되는 수가 존재

notepad96.tistory.com