0Pricing
Competitive Programming Academy · บทเรียน

การทดสอบจำนวนเฉพาะถึง 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. GCD, LCM และอัลกอริทึมยูคลิด
  2. การทดสอบจำนวนเฉพาะถึง sqrt(n)
  3. ตะแกรงของเอราโตสเทนีส
  4. การแยกตัวประกอบจำนวนเฉพาะและตัวหาร
← กลับไปที่ Competitive Programming Academy