এডাব্লু কে - 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
।
সুতরাং হয় আমরা একটি প্রধান বিভাজক বা একটি নতুন প্রাইম খুঁজে পেয়েছি। তারপরে প্রাইমটি L[n+m*p]
খালি পাওয়া টেপটিতে পরবর্তী স্থানে উন্নীত হবে ।
এটি সেলাই অফ ইরোটোস্টিনিসের মতো "টান দিয়ে একটি ক্লিনের বোতল"। আপনি সবসময় টেপ শুরুর কাজ করে। টেপ দিয়ে বহুগুণ প্রাইম ফায়ারিংয়ের পরিবর্তে, আপনি যে প্রাইমগুলি ইতিমধ্যে খুঁজে পেয়েছেন তেমন কার্সার হিসাবে টেপ থেকে দূরে ঝাঁপিয়ে পড়ে তাদের নিজস্ব মূল্যের একাধিক দূরত্বে যখন কোনও মুক্ত অবস্থান না পাওয়া যায়।
যখন বাইরের লুপটি প্রতিটি লুপের জন্য একপ্রাইম বা প্রাইম ডিসিশন তৈরি করে না, প্রাইমগুলি গণনা করা হয় এবং P
কী হিসাবে সংরক্ষণ করা হয় তবে প্রোগ্রামটির প্রবাহের জন্য এই (কী, মান) জোড়ার মান প্রাসঙ্গিক নয়।
তাদের কী এমন i
মধ্যে হতে হবে P
(ইতিমধ্যে i in P
), আমরা পি (P (ঝ)) শাবক একটি মৌলিক আছে।
চলমান:
$ time awk -f x.awk | wc -l
10000
real 0m3.675s
user 0m3.612s
sys 0m0.052s
অ্যাকাউন্টে বিবেচনা করুন যে এই কোডটি বাহ্যিক প্রাক্কলকুলেটেড প্রাথমিক টেবিলগুলি ব্যবহার করে না।
আমার ভাল পুরানো থিংকপ্যাড টি 60 এ সময় নেওয়া হয়েছে, তাই আমার কাছে মনে হয় এটি দ্রুত বলা উচিত।
ডেবিয়ান 8 / এএমডি 64 এর সাথে mawk
এবং এর সাথে পরীক্ষিতgawk