मेरे mathmax समाधान के साथ मुद्दा यह है कि यह 5000 और 5200 के बीच का अभाज्य लगाने के लिए सिर्फ एक लेने और बाकी टॉस करने सब काम करता है।
import random
minimum = 5000
maximum = 5200
next((x for x in random.sample(range(minimum, maximum), maximum - minimum) if not [t for t in range(2, x) if not x % t]), None)
यह 18x के बारे में तेजी से होता है: यह अधिक बेतरतीब ढंग से 5000 और 5200 के बीच अद्वितीय संख्या लेने के लिए कुशल जब तक आप पहले एक एक प्रमुख बात यह है कि लगता है हो सकता है। हम अपने primality परीक्षण के बारे में एक छोटे से होशियार होने से इस पर एक और 18x सुधार प्राप्त कर सकते हैं: के रूप में यह एक परिणाम के random.shuffle()
के विपरीत उस जगह में सूची पर चल रही रिटर्न
next((x for x in random.sample(range(minimum, maximum), maximum - minimum) if not [t for t in [2] + list(range(3, int(x**0.5) + 1, 2)) if not x % t]), None)
ध्यान दें कि random.sample()
प्रयोग किया जाता है।
next((x for x in (lambda y: random.shuffle(y) or y)(list(range(5000, 5200))) if not [t for t in range(2, x) if not x % t]), None)
ध्यान दें कि प्रत्येक रेंज एक प्रमुख संख्या में शामिल हैं में एक ही लिखा था। लेकिन उदाहरण के लिए, 'n' और' 2 * n' के बीच हमेशा एक प्रधान होता है। –