Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างจำนวนเฉพาะที่ใหญ่ที่สุดและน้อยที่สุดในอาร์เรย์ใน Java


คำชี้แจงปัญหา

ด้วยอาร์เรย์ของจำนวนเต็มที่กำหนดโดยที่องค์ประกอบทั้งหมดน้อยกว่า 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 max) สูงสุด =arr[i]; ถ้า (arr[i] <นาที) min =arr[i]; } } ผลตอบแทนสูงสุด - นาที; } public void main(String args[]){ // เรียกใช้ตะแกรง runSieveOfEratosthenes(); int arr[] ={ 1, 2, 3, 4, 5 }; System.out.println(ความแตกต่าง(arr)); }}

ผลลัพธ์

3