การทดสอบจำนวนเฉพาะถึง sqrt(n)
ตรวจสอบจำนวนเดียวอย่างมีประสิทธิภาพ
การทดสอบจำนวนเฉพาะถึง sqrt(n) เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 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 เพื่อรักษาความแม่นยำได้แล้ว ✅
เรียนรู้ Coding Interview Prep ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 90
- บทเรียน
- 360
คำถามที่พบบ่อย
บทเรียน “การทดสอบจำนวนเฉพาะถึง sqrt(n)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทดสอบจำนวนเฉพาะถึง sqrt(n)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทดสอบจำนวนเฉพาะถึง sqrt(n)”
ตรวจสอบจำนวนเดียวอย่างมีประสิทธิภาพ คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การทดสอบจำนวนเฉพาะถึง sqrt(n)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม
ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- GCD, LCM และอัลกอริทึมยูคลิด
- การทดสอบจำนวนเฉพาะถึง sqrt(n)
- ตะแกรงของเอราโตสเทนีส
- การแยกตัวประกอบจำนวนเฉพาะและตัวหาร