สวัสดีและยินดีต้อนรับกลับ
ฉันอยากจะให้คุณอีก ท้าทายอีกงานหนึ่ง
แน่นอน คนนี้กำลังจะไป เป็นเรื่องเกี่ยวกับอาร์เรย์
อยากให้ทำความคุ้นเคยกับวิธีการ การใช้อาร์เรย์ วิธีเข้าถึงอาร์เรย์
และวิธีสร้างอาร์เรย์
ดังนั้นคุณควรเขียนโปรแกรมภาษาซี ที่จะหาจำนวนเฉพาะทั้งหมดตั้งแต่
3 ถึง 100
และเรากำลังจะทำ มันมีประสิทธิภาพมาก
เลยเอามาใช้สักหน่อย อัลกอริธึมที่ทำให้คุณใช้อาร์เรย์
แต่โปรแกรมธรรมดามาก
มันจะแสดงเป็นเอาต์พุตเท่านั้น จำนวนเฉพาะทั้งหมดตั้งแต่ 3 ถึง 100
และเหตุผลที่คุณไม่ทำ 0 ถึง 3 เป็นเพราะคุณกำลังจะฮาร์ดโค้ดเหล่านั้น
มันค่อนข้างง่าย
2 ตัวแรกของจำนวนเฉพาะ 2 ตัวแรกของเรา คือ 1 และ 2 ที่ไม่ใช่ 0
จะไม่มีการป้อนข้อมูล ไปที่โปรแกรมนี้เพียงแค่เอาท์พุต
และผลลัพธ์จะเป็น จำนวนเฉพาะแต่ละตัวคั่นด้วยช่องว่างในบรรทัดเดียว
มันค่อนข้างพื้นฐาน, ไปจนถึง 100.
คุณจะต้องสร้าง อาร์เรย์ที่จะเก็บแต่ละจำนวนเฉพาะเมื่อถูกสร้างขึ้น
คุณสามารถฮาร์ดโค้ดได้ก่อน จำนวนเฉพาะ 2 จำนวน ซึ่งก็คือ
2 และ 3 ในอาร์เรย์จำนวนเฉพาะ
สิ่งที่ฉันจินตนาการไว้ที่นี่ก็คือ คุณจะสร้างอาร์เรย์
คุณจะตั้งชื่อมันว่าจำนวนเฉพาะ และคุณก็แค่ ฮาร์ดโค้ด 2 ตัวแรกในนั้น
และที่สำคัญคือฮาร์ดโค้ด ก็เช่นกัน เพราะอัลกอริธึมที่เราจะใช้ในการค้นหา
จำนวนเฉพาะจะเปรียบเทียบกับจำนวนเฉพาะอื่นๆ และ ฉันจะอธิบายว่าในวินาที
คุณต้องการใช้ลูป สำหรับงานนี้ให้ค้นหาเฉพาะจำนวนเฉพาะที่ไม่เกิน
100
ทันทีที่ค้างคาวคุณควร ลองนึกภาพวงอย่างน้อยเพื่อแสดงจำนวนเฉพาะที่คุณพบ
นั่นอาจจะเป็นจุดจบ loop คือลูปที่ท้ายโปรแกรมของคุณที่เพิ่งผ่านไป
อาร์เรย์เฉพาะและแสดงทุกอย่างที่อยู่ภายในนั้น
ตอนนี้ถ้าคุณกำลังหาทั้งหมดที่สำคัญ ตัวเลขไม่เกิน 100 คุณไม่จำเป็นต้องสร้างขนาดของอาร์เรย์
น่าจะมากกว่า 50 เพราะไม่คิดว่าจะมีมากกว่า 50 ไพรม์ ตัวเลขถึง
100 แล้วแต่จะตั้งไม่ได้ ถูกต้องแน่นอนเพราะคุณไม่รู้ว่ามีจำนวนเฉพาะกี่จำนวน
ดังนั้นฉันจะบอกว่าเมื่อคุณสร้าง อาร์เรย์ไพรม์ แค่สร้างขนาด 100
ดังนั้นคุณต้องวนซ้ำอย่างแน่นอน เพื่อพิมพ์ออกมาในตอนท้าย
คุณจะต้องวนซ้ำอีก เพื่อพยายามหาจำนวนเฉพาะ
และคุณสามารถหาจำนวนเฉพาะได้ทุกเมื่อ อัลกอริทึมที่คุณต้องการ
แต่สิ่งที่ฉันจะใช้คือฉันจะใช้สิ่งนี้ เพราะมีเหตุผลมากกว่าที่จะใช้อาร์เรย์ถ้าคุณทำอัลกอริธึมนี้
ดังนั้นเกณฑ์ที่ใช้ได้ การระบุจำนวนเฉพาะคือตัวเลขถือเป็นจำนวนเฉพาะ
ถ้ามันหารด้วยจำนวนเฉพาะตัวอื่นๆ ก่อนหน้านั้นไม่ลงตัว
และยังมีอีกมาก ไปที่อัลกอริธึมนั้น แต่นั่นคือจุดเริ่มต้น
คุณยังต้องการดูเท่านั้น จนถึงจำนวนหนึ่ง
ดังนั้นคุณสามารถใช้สิ่งต่อไปนี้เป็น เงื่อนไข x ในวงในสุด
อีกครั้ง สิ่งที่คุณต้องการ การมีตรงนี้คือคุณอาจต้องมี
2 ลูป
เราได้กล่าวถึงที่สามแล้ว วนซ้ำที่ด้านล่างเพื่อพิมพ์ข้อมูล
แต่คุณจะต้อง มี 2 ลูปสำหรับงานนี้
และอัลกอริทึมที่ฉันกำลังพูดถึง นี่คืออัลกอริธึมที่ได้รับการปรับปรุงให้ดีขึ้น
นี่คือเหตุผลที่คุณต้องการทำ
ตอนนี้ถ้าคุณต้องการหาจำนวนเฉพาะ ในอีกทางหนึ่ง ไม่เป็นไรตราบใดที่คุณใช้อาร์เรย์เพราะ
จุดประสงค์ทั้งหมดของการกำหนดไม่ใช่เพื่อทำความเข้าใจจำนวนเฉพาะ
มันคือ เพื่อทำความเข้าใจการใช้อาร์เรย์
โดยดูจากเมื่อก่อน สร้างจำนวนเฉพาะที่บังคับให้คุณใช้อาร์เรย์และคุณ
เก็บว่าแต่ละจำนวนเฉพาะเมื่อมันถูกสร้างขึ้นตามที่ฉันกล่าวถึง
และอีกวิธีหนึ่งที่คุณทำได้ ที่เหมาะสมกว่านั้นคือคุณไม่ต้องการดูเลขคู่
ดังนั้นถ้าคุณจะผ่านแต่ละอย่าง ตัวเลขตั้งแต่ 3 ถึง 100 และคุณกำลังตรวจสอบว่าเป็นจำนวนเฉพาะหรือไม่
คุณสามารถ ละเว้นเลขคู่เพราะเลขคู่ไม่มีวันเป็นจำนวนเฉพาะ
ดังนั้นในวงนอกสุดหรือ วงในสุดคุณสามารถตรวจสอบได้ว่าจำนวนเฉพาะหารด้วย
จำนวนเฉพาะอื่น ๆ หรือตรวจสอบให้แน่ใจว่าไม่ได้ตรวจสอบและข้ามไป
แล้วเงื่อนไขแกนอื่นนี้ ในวงในสุดคือการทำให้แน่ใจว่าค่าของ
p ไม่ เกินรากที่สองของจำนวนเฉพาะ นั่นคือส่วนอื่นของอัลกอริทึม
ดังนั้นสิ่งนี้อาจไม่สมเหตุสมผลทั้งหมด แต่โดยพื้นฐานแล้วนี่เป็นเกณฑ์บางอย่างที่ฉันต้องการให้คุณปฏิบัติตาม
ข้ามการตรวจสอบเลขคู่ แล้วอัลกอริทึมก็คือการค้นหาจำนวนเฉพาะก่อนหน้าใดๆ
ที่ถูกสร้างขึ้นและเพื่อตรวจสอบว่า p ไม่ได้เกิดขึ้นหรือไม่
เกินสแควร์รูทของจำนวนเฉพาะเพราะนั่นคืออีกอันหนึ่ง วิธีตรวจสอบจำนวนเฉพาะ
ดังนั้นคุณจะต้องมี a for loop ซึ่งโดยทั่วไปแล้วจะเปลี่ยนจาก
5 ถึง 100 จากนั้นคุณสามารถ เพิ่มขึ้น 2 เพื่อให้คุณมองหาเฉพาะเลขคี่
แล้วในวงในสำหรับคุณ มีข้างในนั้นคุณจะต้องการไปจาก
1 จนถึงอันนี้ ค่า p หารด้วยไพรม์ sub-I มากกว่าเท่ากับไพรม์ sub-I
และคุณยังอยากจะทำ แน่ใจว่าจำนวนไม่เป็นเฉพาะ
ดังนั้นคุณจึงไม่ต้องการเกิน a ตรวจสอบบางอย่างแล้วคุณต้องการกระโดดออกจากวงในด้วย
if คุณพบจำนวนเฉพาะจริงๆ
และวิธีที่คุณสามารถตรวจสอบได้ จำนวนเฉพาะ ถ้าจำนวนปัจจุบันของคุณหารด้วยจำนวนเฉพาะก่อนหน้าใดๆ
ลงตัว เพื่อให้คุณสามารถดูอาร์เรย์ของไพรม์ได้
และถ้าโมดูลัสสำหรับสิ่งนั้น เท่ากับ 0 แล้วคุณไม่มีจำนวนเฉพาะ
มิฉะนั้น ถ้าคุณทำสิ่งนี้แล้ว เช็คหมดทั้งวงแล้วออกจากที่นั่นแล้ว
เกินไพรม์ sub-I มากกว่าไพรม์ sub-I สแควร์รูท ปัญหาและคุณไม่พบจำนวนเฉพาะจริง
ๆ แล้วนั่นหมายความว่า ที่คุณสามารถเพิ่มจำนวนเฉพาะนั้นไปยังอาร์เรย์เฉพาะของคุณแล้ว เพียงพิมพ์อาร์เรย์ไพรม์ออกมา
ดังนั้นอัลกอริธึมที่แท้จริงจึงไม่ ดูสับสนเหมือนที่ฉันทำ
อีกครั้งพยายามที่จะให้คุณเป็น pseudocode จำนวนมากมีคำแนะนำที่เป็นไปได้ด้วย
for . ภายนอก วนในวงใน
แต่คุณจะต้องเข้าถึง อาร์เรย์
คุณจะอ่านอาร์เรย์ คุณจะดูที่ อาร์เรย์เพื่อดูค่าก่อนหน้า
มันจะไปหาคุณ คุ้นเคยกับอาร์เรย์จริงๆ
ขอให้โชคดีและฉันจะให้ วิธีแก้ปัญหาในการบรรยายครั้งต่อไปที่จะเข้าใจมากขึ้น
แต่สิ่งเหล่านี้ เป็นข้อกำหนดและความนิยมบางส่วน
ขอขอบคุณ.