진수 변환 (2진수,8진수,16진수......)

void getK(string& result, int num, int k)
{
    if(num/k !=0)
        getK(result, num/k, k);
    result += to_string(num%k);
}


void getTwo(string& result, int num)
{
    while(num !=0)
    {
    	if(num & 1 == 1)
        	result = "1" + result;
        else
        	result = "0" + result;
        num>>=1;
    }
}

 

소수 확인

bool isPrime(long long n)
{
    if(n<2)
        return false;
    
    long long a = (long long) sqrt(n);
    for(long long i=2; i<=a; ++i)
    {
        if(n%i == 0)
            return false;
    }
    return true;
}

 

약수 구하기

void getDivisor(vector<int>& divisors, int num)
{
    int root = sqrt(num);
    for( int i=1; i<=root; ++i)
    {
        if(num%i == 0)
        {
            divisors.push_back(i);
            if(num/i != i)
                divisors.push_back(num/i);
        }
    }
}

 

 

최대 공약수 구하기

// a>=b 라고 했을때사용
int gcd(int a, int b)
{
	return a % b == 0 ? b : gcd(b, a % b);
}


//여러 수의 
vector<int> A;
int a = A[0];
for (int x : A) 
    a = gcd(max(a, x), min(a, x));

 

 

최소 공배수 구하기

a*b = 최대 공약수 * 최소 공배수

int lcm (int a, int b)
{
	return (a*b) / gcd(a, b);
}

+ Recent posts