คำชี้แจงปัญหา
ด้วยอาร์เรย์ของจำนวนเต็มที่กำหนดโดยที่องค์ประกอบทั้งหมดน้อยกว่า 1000000 ค้นหาความแตกต่างระหว่างจำนวนเฉพาะที่ใหญ่ที่สุดและจำนวนเฉพาะที่เล็กที่สุดในอาร์เรย์
ตัวอย่าง
อาร์เรย์:[ 1, 2, 3, 4, 5 ]จำนวนเฉพาะที่ใหญ่ที่สุด =5 จำนวนเฉพาะที่เล็กที่สุด =2 ความแตกต่าง =5 - 3 =2
วิธีแก้ปัญหา
ใช้วิธี Sieve of Eratosthenes ซึ่งเป็นวิธีที่มีประสิทธิภาพในการค้นหาจำนวนเฉพาะทั้งหมดที่น้อยกว่าจำนวนที่กำหนด จากนั้นเราจะหาจำนวนเฉพาะที่ใหญ่ที่สุดและเล็กที่สุดเพื่อให้ได้ผลต่างที่ต้องการ
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรมใน Java เพื่อค้นหาผลลัพธ์ที่ต้องการ
<ก่อน> JavaTester คลาสสาธารณะ { คงที่ int MAX =1000000; คงที่บูลีนไพรม์[] =บูลีนใหม่[MAX + 1]; โมฆะคงที่สาธารณะ runSieveOfEratosthenes (){ // รีเซ็ตการตั้งค่าสถานะไพรม์ให้เป็นจริงสำหรับ (int i=0; iผลลัพธ์
3