일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 판매
- 카일레라
- 포커
- 옥션해킹
- 상호링크
- 홀뎀
- 맞고게임
- MAME
- 카일레라서버
- 게임 외주
- 윈윈
- 티스토리 초대장
- 고스톱
- 써치아이
- 포커게임
- holdem
- 윈윈전략
- 온라인게임
- Mame32
- 맞고
- 프로그램 외주
- 게임 개발
- 틀린그림찾기
- 서치아이
- 틀린그림 찾기
- 영어단어게임
- 프로그램 개발
- 보드게임
- 옥션소송
- 영어단어
- Today
- Total
kyuseo의 게임 프로그래밍
IsPrimeNumber, GetVPrimeNumber, GetVPrimeNumber120 :: 소수 관련 함수 본문
개요.. |
개요:
CMap 클래스에서 InitHashTable 함수를 이용하여 해시 테이블의 크기를 설정할 경우, 인자로 소수(Prime Number)를 입력해야 효율이 좋다고 합니다. 매번 소수를 찾기도 어렵고하여 소수를 구하는 함수들을 만들어 보았습니다.
코드 |
함수: /// 소수인지검사한다. inline BOOL IsPrimeNumber( int nNumber ) { int dwSqrt = ( int ) sqrt( ( double ) nNumber ) + 1; for( int i = 2; i < dwSqrt; i++ ) { if( nNumber % i == 0 ) return FALSE; }
return TRUE; }
/// 해당값보다크고가까운소수를구한다. inline int GetVPrimeNumber( int nNumber ) { ASSERT( nNumber > 1 ); for( int i = nNumber; i < UINT_MAX; i++ ) { if( IsPrimeNumber( i ) == TRUE ) return i; }
ASSERT(0); return 0; }
/// 해당값보다크고가까운소수를구한다. inline int GetVPrimeNumber( double dblNumber ) { return GetVPrimeNumber( ( int ) dblNumber ); }
/// 해당값의120 퍼센트에해당하는소수를구한다. (주로120%의크기가필요한해시테이블에서사용) inline int GetVPrimeNumber120( int nNumber ) { return GetVPrimeNumber( ( int )( nNumber*1.20f ) ); } |