AWK - 129 बाइट्स
... oookay ... कॉम्पैक्टनेस के लिए अंक जीतने के लिए बहुत लंबा ... लेकिन शायद यह गति के लिए कुछ सम्मान प्राप्त कर सकता है?
x
फ़ाइल:
BEGIN{n=2;i=0;while(n<1366662){if(n in L){p=L[n];del L[n]}else{P[p=n]=++i;if(i in P)print n}j=n+p;while(j in L)j=j+p;L[j]=p;n++}}
चल रहा है:
$ awk -f x | nl | tail
9991 1365913
9992 1365983
9993 1366019
9994 1366187
9995 1366327
9996 1366433
9997 1366483
9998 1366531
9999 1366609
10000 1366661
पठनीय:
BEGIN {
n=2
i=0
while( n<1366662 ) {
if( n in L ) {
p=L[n]
del L[n]
} else {
P[p=n]=++i
if( i in P ) print n
}
j=n+p
while( j in L ) j=j+p
L[j]=p
n++
}
}
कार्यक्रम L
में "नंबरों की टेप" के रूप में उपयोग किए जाने वाले प्रिम्स की एक धारा की गणना होती है, जिसमें पाया गया L
है कि पास के नंबरों को फ़्लैग करने के लिए पहले से ही पहचाने जाने वाले प्राइमरों को कूदते हुए । ये जंपिंग प्राइम्स आगे बढ़ेंगे जबकि "नंबरों की टेप" L
को इसकी शुरुआत से ही नंबर से काट दिया जाता है।
टेप हेड L[n]
को खाली करने के दौरान खाली होने का कोई मतलब नहीं है (प्राइम) विभाजक।
L[n]
एक मान रखने का अर्थ है, यह मान एक प्रमुख और विभाजित करने के लिए जाना जाता है n
।
इसलिए या तो हमें एक प्राइम डिविज़र या एक नया प्राइम मिला है। फिर ths prime L[n+m*p]
खाली पाया जा रहा टेप पर अगले में उन्नत होगा ।
यह एराटोस्थनीज की छलनी की तरह है "एक क्लेन की बोतल के माध्यम से खींचा गया"। आप हमेशा टेप स्टार्ट पर काम करते हैं। टेपों के माध्यम से कई गुना अधिक फायरिंग के बजाय, आप पहले से ही पाए जा रहे अपराधों का उपयोग करते हैं क्योंकि एक मुक्त स्थिति मिलने तक कर्सर अपने स्वयं के मूल्य की कई दूरियों से शुरू होते हैं।
जबकि बाहरी लूप प्रति लूप में एक प्राइम या नॉट प्राइम डिसीजन जेनरेट करता है, पाया गया प्राइम्स काउंट हो जाता है और P
कुंजी के रूप में स्टोर हो जाता है, इस (की, वैल्यू) पेयर का वैल्यू प्रोग्राम फ्लो के लिए प्रासंगिक नहीं है।
यदि उनकी कुंजी पहले i
से P
ही होती है ( i in P
), हमारे पास पी (पी (आई)) नस्ल का एक प्रमुख है।
चल रहा है:
$ time awk -f x.awk | wc -l
10000
real 0m3.675s
user 0m3.612s
sys 0m0.052s
ध्यान रखें कि यह कोड बाहरी पूर्व-निर्धारित प्रधान तालिकाओं का उपयोग नहीं करता है।
मेरे अच्छे पुराने थिंकपैड टी 60 पर समय लगा, इसलिए मुझे लगता है कि यह तेजी से कहलाने लायक है।
साथ परीक्षण किया गया mawk
और gawk
Debian8 / AMD64 पर