คำถามติดแท็ก primes

13
ทำไมเราถึงตรวจสอบถึงรากที่สองของจำนวนเฉพาะเพื่อตรวจสอบว่ามันเป็นนายก?
ในการทดสอบว่าจำนวนนั้นเป็นจำนวนเฉพาะหรือไม่ทำไมเราจึงต้องทดสอบว่ามันหารได้เพียงแค่ถึงรากที่สองของจำนวนนั้นหรือไม่

30
วิธีที่เร็วที่สุดในการแสดงรายการช่วงเวลาทั้งหมดที่ต่ำกว่า N
นี่เป็นอัลกอริธึมที่ดีที่สุดที่ฉันสามารถทำได้ def get_primes(n): numbers = set(range(n, 1, -1)) primes = [] while numbers: p = numbers.pop() primes.append(p) numbers.difference_update(set(range(p*2, n+1, p))) return primes >>> timeit.Timer(stmt='get_primes.get_primes(1000000)', setup='import get_primes').timeit(1) 1.1499958793645562 มันสามารถทำให้เร็วขึ้นได้หรือไม่ รหัสนี้มีข้อบกพร่อง: เนื่องจากnumbersเป็นชุดที่ไม่มีการเรียงลำดับจึงไม่มีการรับประกันที่numbers.pop()จะลบหมายเลขต่ำสุดออกจากชุด อย่างไรก็ตามมันใช้งานได้ (อย่างน้อยสำหรับฉัน) สำหรับตัวเลขที่ป้อน: >>> sum(get_primes(2000000)) 142913828922L #That's the correct sum of all numbers below 2 million >>> 529 in get_primes(1000) …

14
เหตุใดช่วงเวลาสำคัญในการเข้ารหัส?
สิ่งหนึ่งที่ทำให้ฉันเป็นนักเข้ารหัสไม่ใช่: ทำไมการใช้หมายเลขเฉพาะจึงสำคัญ? อะไรทำให้พวกเขาพิเศษในการเข้ารหัส? ไม่มีใครมีคำอธิบายสั้นๆ ง่ายๆ ? (ฉันรู้ว่ามีไพรเมอร์มากมายและการใช้การเข้ารหัสเป็นคัมภีร์ แต่ตามที่กล่าวไว้: ฉันไม่ต้องการใช้อัลกอริทึมการเข้ารหัสลับของตัวเองและสิ่งที่ฉันพบทำให้สมองของฉันระเบิด - ไม่มี 10 หน้าสูตรคณิตศาสตร์ ได้โปรด :)) ขอบคุณสำหรับคำตอบทั้งหมด ฉันยอมรับสิ่งที่ทำให้แนวคิดที่แท้จริงชัดเจนที่สุดสำหรับฉัน

14
อัลกอริทึมเร็วที่สุดในการค้นหาหมายเลขเฉพาะคืออะไร
อัลกอริทึมที่เร็วที่สุดในการค้นหาหมายเลขเฉพาะด้วย C ++ คืออะไร ฉันใช้อัลกอริทึมของตะแกรง แต่ฉันยังต้องการให้เร็วขึ้น!
183 c++  algorithm  primes 

9
ทำไมต้องใช้หมายเลขเฉพาะใน hashCode
ฉันแค่สงสัยว่าทำไมช่วงเวลาดังกล่าวถูกใช้ในวิธีการเรียนhashCode()? ตัวอย่างเช่นเมื่อใช้ Eclipse เพื่อสร้างhashCode()วิธีการของฉันจะมีจำนวนเฉพาะที่31ใช้เสมอ: public int hashCode() { final int prime = 31; //... } อ้างอิง: นี่เป็นไพรเมอร์ที่ดีใน Hashcode และบทความเกี่ยวกับวิธีการแฮ็กที่ทำงานที่ฉันพบ (C # แต่แนวคิดสามารถถ่ายโอนได้): แนวทางและกฎของ Eric Lippert สำหรับ GetHashCode ()
174 java  hashcode  primes 

30
วิธีสร้างการแม็พแบบกระชับที่สุด n → isprime (n) สูงสุดถึงขีด จำกัด N?
โดยธรรมชาติแล้วbool isprime(number)จะมีโครงสร้างข้อมูลที่ฉันสามารถสืบค้นได้ ฉันกำหนดอัลกอริธึมที่ดีที่สุดเพื่อเป็นอัลกอริธึมที่สร้างโครงสร้างข้อมูลที่มีการใช้หน่วยความจำต่ำสุดสำหรับช่วง (1, N] โดยที่ N เป็นค่าคงที่ เพียงตัวอย่างของสิ่งที่ฉันกำลังมองหา: ฉันสามารถแทนตัวเลขคี่ ด้วยหนึ่งบิตเช่นสำหรับช่วงตัวเลขที่กำหนด (1, 10] เริ่มต้นที่ 3:1110 พจนานุกรมต่อไปนี้สามารถบีบได้มากกว่านี้ใช่ไหม ฉันสามารถกำจัดทวีคูณของห้าด้วยงานบางอย่าง แต่ตัวเลขที่ลงท้ายด้วย 1, 3, 7 หรือ 9 ต้องอยู่ในอาร์เรย์ของบิต ฉันจะแก้ปัญหาได้อย่างไร

4
จะตรวจสอบได้อย่างไรว่าตัวเลขเป็นจำนวนเฉพาะกับ regex หรือไม่?
ฉันพบตัวอย่างโค้ดต่อไปนี้สำหรับ Java บนRosettaCode : public static boolean prime(int n) { return !new String(new char[n]).matches(".?|(..+?)\\1+"); } ฉันไม่รู้จัก Java เป็นพิเศษ แต่เข้าใจทุกแง่มุมของข้อมูลโค้ดนี้ยกเว้น regex เอง ฉันมีความรู้พื้นฐานถึงขั้นสูงเกี่ยวกับ Regex ตามที่คุณพบในฟังก์ชัน PHP ในตัว วิธีการที่ไม่.?|(..+?)\\1+ตรงกับตัวเลขที่สำคัญ?
128 java  regex  primes 

6
กรณีการใช้งานที่เป็นไปได้ของ. isProbablePrime () ของ BigInteger คืออะไร?
วิธีBigInteger.isProbablePrime()นี้ค่อนข้างแปลก จากเอกสารนี้จะบอกได้ว่ามีจำนวนเป็นสำคัญกับความน่าจะเป็นของ1 - 1 / 2^argที่argเป็นอาร์กิวเมนต์จำนวนเต็ม มีอยู่ใน JDK มานานแล้วดังนั้นจึงหมายความว่าต้องมีการใช้งาน ความรู้ที่ จำกัด ของฉันในด้านวิทยาการคอมพิวเตอร์และอัลกอริทึม (และคณิตศาสตร์) บอกฉันว่ามันไม่สมเหตุสมผลเลยที่จะรู้ว่าตัวเลขนั้น "น่าจะ" เป็นจำนวนเฉพาะ แต่ไม่ใช่จำนวนเฉพาะ ดังนั้นสถานการณ์ที่เป็นไปได้ที่เราต้องการใช้วิธีนี้คืออะไร? การเข้ารหัส?
84 java  primes 

25
วิธีที่สวยงามที่สุดในการสร้างจำนวนเฉพาะ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ วิธีใดที่สวยงามที่สุดในการใช้ฟังก์ชันนี้: ArrayList generatePrimes(int n) ฟังก์ชันนี้จะสร้างช่วงแรกn(แก้ไข: ที่n>1) ดังนั้นgeneratePrimes(5)จะส่งกลับไฟล์ArrayList{2, 3, 5, 7, 11}ด้วย (ฉันกำลังทำสิ่งนี้ใน C # แต่ฉันพอใจกับการใช้งาน Java - หรือภาษาอื่น ๆ ที่คล้ายกันสำหรับเรื่องนั้น (ไม่ใช่ Haskell)) ฉันรู้วิธีเขียนฟังก์ชันนี้ แต่เมื่อคืนที่ผ่านมามันไม่ได้ออกมาดีอย่างที่หวัง นี่คือสิ่งที่ฉันคิดขึ้น: ArrayList generatePrimes(int toGenerate) { ArrayList primes = new ArrayList(); primes.Add(2); primes.Add(3); while (primes.Count < toGenerate) { …
84 c#  java  algorithm  primes 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.