자주 쓰이는 알고리즘 모음 - 수학 편
Algorithm/유용한 함수
2022. 11. 2. 04:10
※ 작성기준은 C/C++입니다.
10진수 n의 k진수 구하기
string get_K_number(int n, int k) {
string answer = "";
while(n)
{
answer.push_back(n%k + '0');
n /= k;
}
reverse(answer.begin(), answer.end());
return answer;
}
소수 판별하기
방법 1) 배열에 기록해두는 방법
bool numbers[1000] = {true,}; // 모두 true로 초기화
numbers[0] = false;
numbers[1] = false;
for (int i = 2; i <= n; ++i) {
for (int j = 2; i*j <= n; ++j) {
prime[i*j] = false;
}
}
방법 2) 제곱근을 이용한 방법
bool isPrime(int n)
{
if (n == 0 || n == 1)
return false;
int squareRoot = sqrt(n);
for (int i = 2; i <= squareRoot; ++i)
if (n%i == 0)
return false;
return true;
}
약수 구하기
vector<int> get_Divisors(int n) {
vector<int> answer;
answer.push_back(1);
for(int i = 2; i <= n/2; i++)
if(n%i == 0)
answer.push_back(i);
answer.push_back(n);
return answer;
}
최대 공약수(유클리드)
int get_gcd(int a, int b) {
if(b == 0) return a;
else return get_gcd(b, a%b);
}
최소 공배수 - 최대 공약수 알고리즘 필요!
int get_lcm(int a, int b) {
return a*b/get_gcd(a, b);
}
'Algorithm > 유용한 함수' 카테고리의 다른 글
자주 쓰이는 알고리즘 모음 - 문자열 편 (0) | 2022.11.02 |
---|