ë¬¸ì œ ì •ì�˜ 1 ¶
50000 ì�´í•˜ì�˜ ëª¨ë“ ì†Œìˆ˜ë¥¼ 구한다. 추천 목표시간ì�€ 1ì´ˆ ì�´ë‚´ìž…니다.
----
| 소수구하기/재니 |
| 소수구하기/임�� |
| 소수구하기/zennith |
| 소수구하기/�� |
| 소수구하기/�� |
| 소수구하기/�수 |
| 소수구하기/�욱 |
ë¬¸ì œì œê¸° ¶
~cpp ì •ë§� ì •ë§� 급한건ë�°ìš” 100ì–µì�˜ 소수 즉 11ìž�리 소수를 구하는 프로그램ì�´ë‚˜ 11ìž�리 소수 어떤것ì�´ 있는지 ì•Œë ¤ì£¼ì„¸ìš” ì œ ì»´ìœ¼ë¡ ê³„ì‚°ì�´ 안ë�˜ëŠ”ë�° 님들아 ì œë°œ 구해주세요^^ 답변 ê¸°ë‹¤ë¦¬ê² ìŠµë‹ˆë‹¤ 꾸벅...
누군가 ìž�ìœ ê²Œì‹œíŒ�ì—� 다ì�Œê³¼ ê°™ì�€ ë¬¸ì œë¥¼ 질문ì�„ 했다. 글ì�´ì•¼ 기분나ì�˜ì§€ë§Œ, NeoCoinì�€ ì�´ê²ƒì�´ pc로 가능한가가 ê¶�금해 졌다.
ë¬¸ì œë¥¼ ì�´ë ‡ê²Œ ì •ì�˜í–ˆë‹¤.
{{|
11ìž�리로ë�œ ëª¨ë“ ì†Œìˆ˜ 구하기.
|}}
----
ë¬¸ì œì •ì�˜ 1ì�˜ 50000ì�´í•˜ 소수를 구하는 소스중 남훈ì�´ì�˜ 소스ì—�서 ì œê³±ê·¼ ì—°ì‚°ì�„ ë„£ê³ , ëª¨ë“ ì�¸ìž�를 static, 컴파ì�¼ëŸ¬ 옵션ì�„ 최대로해서 ë�Œë ¸ë‹¤. ì¶œë ¥ì�€ í•„ìš” 없으므로, 시간과 갯수만 ì¶œë ¥í•œë‹¤. (Duron 800 MS VS.NET 2003)
소스는 ì�´ê²ƒì�´ê³ ,
보다시피, 시간ì�˜ 측면ì—�서 50,000,000(5천만-8ìž�리) ì�´í›„는 ìƒ�ìƒ�하기 싫다. ì‹œê°„ë¬¸ì œê°€ 아니ë�¼ 메모리 공간ì �ì�¸ ë¬¸ì œë�„ ì¡´ìž¬í• ê²ƒì�´ë‹¤. 5천만 까지가 발견ë�œ 소수만 보관해ë�„ (3001134*4)/(1000*1000)=12메가 ì •ë�„ ë�˜ë‹ˆê¹Œ ë§�ì�´ë‹¤. 앞으로 목표ìž�리수ì�¸ 3ìž�리 ë�™ì•ˆ 소수 갯수가 100ë°° ì¦�가하면 1.2 기가가 ë�œë‹¤.
대체 11ìž�리 ëª¨ë“ ì†Œìˆ˜ë“¤ì�„ êµ¬í•˜ë ¤ë©´, 어떻게 해야 í• ê¹Œìš”?
----
NumberTheory를 공부해�. --JuNe
----
723ë§Œìž�리짜리 소수가 발견ë�˜ì—ˆë‹¤ë„¤ìš” ê´€ë ¨ê¸°ì‚¬ - ìž„ì�¸íƒ�
ë¬¸ì œë¶„ë¥˜
{{|
11ìž�리로ë�œ ëª¨ë“ ì†Œìˆ˜ 구하기.
|}}
ë¬¸ì œì •ì�˜ 1ì�˜ 50000ì�´í•˜ 소수를 구하는 소스중 남훈ì�´ì�˜ 소스ì—�서 ì œê³±ê·¼ ì—°ì‚°ì�„ ë„£ê³ , ëª¨ë“ ì�¸ìž�를 static, 컴파ì�¼ëŸ¬ 옵션ì�„ 최대로해서 ë�Œë ¸ë‹¤. ì¶œë ¥ì�€ í•„ìš” 없으므로, 시간과 갯수만 ì¶œë ¥í•œë‹¤. (Duron 800 MS VS.NET 2003)
소스는 ì�´ê²ƒì�´ê³ ,
~cpp
#include <stdio.h>
#include <time.h>
#include <math.h>
#define DECIMAL 10000
#define MAX_PRIME 5*DECIMAL
static int primeArr[1*DECIMAL] = {2, };
static int i, j, flag, primeArr_p, limit, count = 0;
static time_t start, end;
int main(void) {
primeArr_p = 1;
start = clock();
for (i = 3; i < MAX_PRIME; i += 2) {
limit = (int)sqrt((double)i);
flag = true;
for (j = 0;primeArr[j] <= limit;j++){
if (i % primeArr[j] == 0) {
flag = false;
break;
}
}
if (flag)
primeArr[primeArr_p++] = i;
}
end = clock();
printf("%d �하 소수n",MAX_PRIME);
printf("%f ì´ˆn", (double)(end - start) / CLK_TCK);
printf("소수 %d 개 발견n",primeArr_p);
return 0;
}
결과는 다�과 같다.
| | | | |
----
NumberTheory를 공부해�. --JuNe
마침 ì •ìˆ˜ë¡ ì�„ ë³´ê³ ìžˆì—ˆìŠµë‹ˆë‹¤. 허나 ì œì‹œë�œ 'ìž„ì�˜ì�˜ í�°ìˆ˜ì—� 대한 소수 íŒ�ì • 방법'ì—�서 위ì�˜ 시공간ì�˜ ë¬¸ì œë¥¼ 줄여줄 여지가 ë³´ì�´ì§€ë¥¼ 않내요. ì € ë¬¸ì œ 내준 사람ì�€ 어떻게 í’€ë�¼ëŠ” ê¶�금해요. 11ìž�리ë�¼.. 좀ë�” ìƒ�ê°�í•´ ë´�ì•¼ê² ìŠµë‹ˆë‹¤. --NeoCoin
위 ë¬¸ì œëŠ” 11ìž�리 소수를 모ë‘� 구해ë�¼ê°€ ì•„ë‹ˆê³ "11ìž�리 소수를 구해ë�¼"ì�¼ 것ì�´ë‹¤. --JuNe
----
723ë§Œìž�리짜리 소수가 발견ë�˜ì—ˆë‹¤ë„¤ìš” ê´€ë ¨ê¸°ì‚¬ - ìž„ì�¸íƒ�
BBCì�˜ 방송 기사를 옮겨서 기사가 부실한것 같다. ê´€ë ¨ë‚´ìš© ê·¸ë¦¬ê³ ì�´í•´ê°€ 안가는게, 메르센 소수를 발견하는게 ê·¸ 사람ì�˜ 목표였는지, 아니면 발견ë�œê²ƒì�´ 메르센 소수ì�¸ì§€ë�„ ì�´í•´ê°€ 안가게 í•´ë‘�었지. 것참 관심없는 ë‚´ìš©ì�´ë�¼ê³ ì €ë ‡ê²Œ 해둔건가.--NeoCoin
----
ë¬¸ì œë¶„ë¥˜









