การทดสอบจำนวนเฉพาะถึง sqrt(n)
ตรวจสอบจำนวนเดียวอย่างมีประสิทธิภาพ
การทดสอบจำนวนเฉพาะถึง sqrt(n) เป็นบทเรียน Competitive Programming Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Competitive Programming Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำถามเรื่องจำนวนเฉพาะ
ทักษะคณิตศาสตร์พื้นฐานอย่างหนึ่งคือการตัดสินใจว่าตัวเลขหนึ่งจำนวนเป็นจำนวนเฉพาะหรือไม่ จำนวนเฉพาะมีตัวหารพอดีสองตัวคือหนึ่งและตัวมันเอง มาทดสอบอย่างรวดเร็วกัน 🔍
การตรวจสอบแบบตรงไปตรงมา
คุณอาจลองหาร n ด้วยทุกจำนวนตั้งแต่ 2 จนถึง n ลบ 1 วิธีนี้ถูกต้อง แต่ ช้าอย่างมากเมื่อ n มีขนาดใหญ่
เคล็ดลับรากที่สอง
ข้อสังเกตสำคัญคือ คุณต้องทดสอบตัวหารจนถึงเพียง รากที่สองของ n เท่านั้น หลังจากนั้นจะไม่มีตัวประกอบใหม่ปรากฏขึ้นได้
เหตุใดรากที่สองจึงเพียงพอ
ตัวหารมาเป็นคู่ที่คูณกันได้ n หากทั้งคู่มากกว่ารากที่สอง ผลคูณของทั้งคู่จะมากกว่า n ซึ่งเป็นไปไม่ได้
ขอบเขตของลูป
วนค่า i ตั้งแต่ 2 ตราบใดที่ i คูณ i ยังน้อยกว่าหรือเท่ากับ n การใช้ i*i ช่วยหลีกเลี่ยงข้อผิดพลาดของเลขทศนิยมจาก รากที่สองเมื่อใช้กับจำนวนเต็มขนาดใหญ่
while i * i <= n:
...จัดการกรณีขนาดเล็ก
ตัวเลขที่น้อยกว่า 2 ไม่เป็นจำนวนเฉพาะ ดังนั้นให้ปฏิเสธตั้งแต่ต้น การตรวจป้องกันนี้ช่วยให้ลูปหลักสะอาดและถูกต้อง
if n < 2:
return Falseฟังก์ชันทั้งหมด
นำทุกอย่างมารวมกัน: ตรวจป้องกันค่าขนาดเล็ก แล้วตรวจตัวหารที่เป็นไปได้จนถึงรากที่สอง การหารลงตัวใด ๆ หมายความว่า n เป็นจำนวนประกอบ
def is_prime(n):
if n < 2:
return False
i = 2
while i * i <= n:
if n % i == 0:
return False
i += 1
return Trueเพิ่มความเร็ว
ตรวจ 2 แยกต่างหาก แล้วทดสอบเฉพาะจำนวนคี่ การข้ามจำนวนคู่ช่วยลดงานลงประมาณครึ่งหนึ่งโดยไม่เพิ่มความซับซ้อน
if n % 2 == 0:
return n == 2ต้นทุนด้านเวลา
การทดสอบนี้ใช้เวลา O(sqrt n) สำหรับจำนวนเดียวที่ไม่เกินหนึ่งพันล้าน จะมีการดำเนินการราคาถูกเพียงประมาณ 30,000 ครั้งเท่านั้น
หนึ่งจำนวน ไม่ใช่หลายจำนวน
การทดสอบด้วยรากที่สองเหมาะมากสำหรับคำถามหนึ่งหรือไม่กี่คำถาม หากคุณต้องตรวจสอบจำนวนเฉพาะตลอดทั้งช่วง ตะแกรงจะรวดเร็วกว่ามาก
หลีกเลี่ยงข้อผิดพลาดจากรากที่สอง
การเปรียบเทียบด้วย i*i แทน math.sqrt ช่วยหลีกเลี่ยงข้อผิดพลาดจากการปัดเศษ ซึ่งอาจทำให้ยอมรับหรือปฏิเสธตัวเลขที่อยู่ตรงขอบเขตอย่างไม่ถูกต้อง
ตรวจสอบอย่างรวดเร็ว
ยืนยันขอบเขตที่ทำให้การทดสอบนี้รวดเร็ว
สรุป
ตอนนี้คุณสามารถทดสอบว่าตัวเลขหนึ่งจำนวนเป็นจำนวนเฉพาะหรือไม่ด้วยเวลา O(sqrt n) ตรวจป้องกันค่าขนาดเล็ก ข้ามจำนวนคู่ และใช้ i*i เพื่อรักษาความแม่นยำได้แล้ว ✅
คำถามที่พบบ่อย
บทเรียน “การทดสอบจำนวนเฉพาะถึง sqrt(n)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทดสอบจำนวนเฉพาะถึง sqrt(n)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Competitive Programming Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทดสอบจำนวนเฉพาะถึง sqrt(n)”
ตรวจสอบจำนวนเดียวอย่างมีประสิทธิภาพ คุณปฏิบัติ Competitive Programming Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Competitive Programming Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Competitive Programming Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การทดสอบจำนวนเฉพาะถึง sqrt(n)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Competitive Programming Academy นี้ได้ไหม
ได้ บทเรียน Competitive Programming Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- GCD, LCM และอัลกอริทึมยูคลิด
- การทดสอบจำนวนเฉพาะถึง sqrt(n)
- ตะแกรงของเอราโตสเทนีส
- การแยกตัวประกอบจำนวนเฉพาะและตัวหาร