C++ 소수 판별하기 포스팅 썸네일 이미지

C++/Algorithm

C++ 소수 판별하기

1. 소수 판별 소수란 1보다 크며 1 이외의 자신으로만 나누어지는 수이다. 어떠한 수 n이 소수인지 판별하기 위하여 for문을 사용하여서 2부터 나누어 n-1까지의 수 중 나머지가 0이 되는 수가 존재하는 지 루프를 돌면 판별할 수 있다. 하지만 이러한 방식은 비효율적으로 매우 큰 수인 소수의 경우 엄청난 연산과 비교를 하는 루프를 필요로 한다. 그래서 이를 효율적으로 하기 위하여 특정 방법을 사용하여서 루프 횟수를 줄일 수 있다. 2. 코 드 환경 : Visual studio 2019 #include #include #include using namespace std; bool sosu(int num) { if (num < 2) return false; int a = (int) sqrt(num); f..

2020.11.16 게시됨

2의 n제곱 수인지 판별하기 포스팅 썸네일 이미지

C++/Algorithm

2의 n제곱 수인지 판별하기

1. 개 요 2의 n제곱 수를 2진수로 나타낸다면 2의 1제곱 2 -> 10 2의 4제곱 16 -> 10000 2의 6제곱 64 -> 1000000 2의 0제곱 1 -> 1 와 같이 1로 시작하며 오른쪽의 0이 채워지는 형태이다. 그렇다면 이제 각 수에서 1을 뺀 수를 2진수로 나타내보면 (2의 1제곱-1) 1 -> 1 (2의 4제곱-1) 15 -> 1111 (2의 6제곱-1) 63 -> 111111 (2의 0제곱-1) 0 -> 0 그러면 여기서 0제곱을 제외하고는 1로 2진수가 1로 이루어진 것을 확인 할 수 있다. 그렇다면 이와 같은 사실을 이용하여서 임의의 수 n이 2의 제곱수인지 판별할 수 있다. 임의의 수 n과 n-1를 비트 연산자 &를 사용하여 연산하면 n이 2의 제곱 수인 경우 그 결과 0이..

2020.11.07 게시됨

C++ 문자열 나누기 - string split 포스팅 썸네일 이미지

C++/Algorithm

C++ 문자열 나누기 - string split

1. split Java, JavaScript, Python 등등 대부분의 언어에서 지원하는 문자열 함수이다. split은 특정 문자를 기준으로 문자열을 나누어 준다. ex) 문자열 "abc ef ghi" 을 " "로 나눈다하면 "abc", "ef", "ghi" 를 리턴해준다. 2. 코 드 환경 : Visual Studio 2019 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; vector split(string s, string divid) { vector v; char* c = strtok((char*)s.c_str(), divid.c_str()); while (c) { v.push_bac..

2020.11.03 게시됨