[C언어] 수학함수 거듭제곱(pow)
[C언어] 수학함수 거듭제곱(pow)
지난 post에 누군가 수학함수가 라이브러리로 제공되냐는 질문에 일반적인 수학함수는 math.h 파일에서 기본 함수만 제공이 됩니다. 수학책에 나오는 복잡한 수학 공식은 직접 만들어야 합니다. 오늘은 math.h 에서 제공되는 기본 함수 하나를 한번 써보고 그 함수를 직접 만들고 또 다른 방식으로 코딩해 봤던 과거 C언어 입문기에 실험 했던 코딩 자료를 정리해서 올려 봅니다.
1. 수학함수 거듭제곱(pow)
#include <math.h>
pow(거듭제곱수, 거듭제곱횟수)
pow(2,5) => 32
위 처럼 그냥 pow()함수로 이용하면 원하는 수에 대한 거듭제곱을 계산해 낼 수 있습니다. 어렵지 않게 특정 수에 대한 거듭 제곱을 구할 수 있게 됩니다. 이 외에도 다양한 수학함수를 제공하니깐 한번 구글링을 통해 검색하셔서 찾아보시기 바랍니다.
2. pow()함 수 만들기
그냥 pow()함수를 쓰면 재미가 없습니다. 코딩을 공부하는 사람이라면 한번 제공되는 함수를 직접 구현해보는게 학습에 무척 좋습니다.
[pow1()함수 만들기]
int pow1(int x,int n)
{
if(n==0)
return 1;
else if(n%2==0)
return pow1(x*x,n/2);
else
return x*pow1(x*x,(n-1)/2);
}
[pow2()함수 만들기]
int pow2(int a, int b){
if(b==0) return 1;
else if(b==1) return a;
else return a*pow2(a,b-1);
}
이렇게 두개의 pow()함수를 만들어 봤었네요.
그러면 math.h에서 제공되는 pow()함수와 만든 2개의 pow()함수가 정상적으로 동작하는지 실행 해봅시다.
3. 실행
[코딩]
#include <stdio.h>
#include <math.h>
int pow1(int x,int n)
{
if(n==0)
return 1;
else if(n%2==0)
return pow1(x*x,n/2);
else
return x*pow1(x*x,(n-1)/2);
}
int pow2(int a, int b){
if(b==0) return 1;
else if(b==1) return a;
else return a*pow2(a,b-1);
}
int main(int argc, char *argv[]) {
int x, n;
printf("거듭제곱 수 입력 : ");
scanf("%d",&x);
printf("%d의 몇 제곱을 입력: ",x);
scanf("%d",&n);
printf("pow(%d,%d) = %d \n",x,n,(int)pow(x,n));
printf("pow1(%d,%d) = %d \n",x,n,pow1(x,n));
printf("pow2(%d,%d) = %d \n",x,n,pow2(x,n));
return 0;
}
[결과]

깔끔하게 잘 나오네요.
마무리
지난 post의 댓글에 수학공식이 따로 라이브러리로 제공되는지에 대한 질문에 한번 제공되는 수학함수를 한번 보여주고 그 함수를 직접 만들어 보는 시간으로 post를 정리 했네요.
짱짱맨 호출에 응답하였습니다.
짱짱맨 방문 감사해요
그 누군가가 혹시..^^
Posted using Partiko Android
ㅋㅋㅋ ^^
수학을 좋아하는분이 코딩도 할 수 있겠네요. ㅎㅎㅎ
그쵸!
코딩이 수학이라고 해도 과언이 아니죠.
럭키맨 호출에 응답하였습니다. 스팀엔진에서 5000스달 확인하세요 :)