계승 구하기 ¶
~cpp /* fac.c */ #include <stdio.h> int main(void) { int num; unsigned long int fac = 1; printf("Enter Number : "); scanf("%d", &num); do fac *= num; while (--num); printf("%u\n", fac); return 0; }
소수 구하기 ¶
~cpp /* prime2.c */ #include <stdio.h> #include <time.h> #define MAX_PRIME 50000 int main(void) { int i, j, flag, arr_p, tmp; int arr[10000] = {0, }; time_t start, end; start = clock(); arr[0] = 2; arr_p = 1; for (i = 3; i < MAX_PRIME; i += 2) { for (j = 0, flag = 1, tmp = i >> 1; tmp >= arr[j]; j++) { if (i % arr[j] == 0) { flag = 0; break; } } if (flag) { arr[arr_p] = i; arr_p++; } } i = 0; end = clock(); while (arr[i] != 0) printf("%d ", arr[i++]); printf("\n%f\n", (double)(end - start) / CLK_TCK); return 0; }
컴비네이션 ¶
~cpp int factorial(int arg) { return arg <= 1 ? 1 : arg * factorial(arg - 1); } int permutation(int arg1, int arg2) { return arg2 == 0 ? 1 : arg1 * permutation(arg1 - 1, arg2 - 1); } int combination(int arg1, int arg2) { return permutation(arg1, arg2) / factorial(arg2); }
이 컴비네이션 함수.. 제대로 푼건지 확신이 안가는군요. 6c3 같은거로 테스트 해보면 제대로 돌아가는 거 같은데요.