U E D R , A S I H C RSS

zennith/source

계승 구하기

~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 같은거로 테스트 해보면 제대로 돌아가는 거 같은데요.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0840 sec