समस्या कथन
पूर्णांकों की एक दी गई सरणी जहां सभी तत्व 1000000 से कम हैं। सरणी में सबसे बड़ी और सबसे छोटी अभाज्य संख्या के बीच का अंतर ज्ञात करें।
उदाहरण
सरणी: [ 1, 2, 3, 4, 5 ] सबसे बड़ी अभाज्य संख्या = 5 सबसे छोटी अभाज्य संख्या = 2 अंतर = 5 - 2 = 3
समाधान
एराटोस्थनीज की छलनी (Sieve of Eratosthenes) दृष्टिकोण का उपयोग करें, जो दी गई संख्या से छोटी सभी अभाज्य संख्याओं को खोजने का एक कुशल तरीका है। फिर हम आवश्यक अंतर प्राप्त करने के लिए सबसे बड़ी और सबसे छोटी अभाज्य संख्या का पता लगाएंगे।
उदाहरण
आवश्यक आउटपुट खोजने के लिए जावा में निम्न प्रोग्राम है।
public class JavaTester {
static int MAX = 1000000;
static boolean prime[] = new boolean[MAX + 1];
public static void runSieveOfEratosthenes(){
// अभाज्य फ्लैग्स को true पर रीसेट करें
for(int i=0; i < MAX+1; i++) prime[i] = true;
// 1 को गैर-अभाज्य के रूप में सेट करें
prime[1] = false;
for (int p = 2; p * p <= MAX; p++) {
// यदि prime[p] संशोधित नहीं है, तो यह एक अभाज्य संख्या है
if (prime[p]) {
// p के सभी गुणकों को अपडेट करें
for (int i = p * 2; i <= MAX; i += p) prime[i] = false;
}
}
}
public static int difference(int arr[]){
int min = MAX + 2;
int max = -1;
for (int i = 0; i < arr.length; i++) {
// जांचें कि संख्या अभाज्य है या नहीं
if (prime[arr[i]] == true) {
// मैक्स और मिन मान सेट करें
if (arr[i] > max) max = arr[i];
if (arr[i] < min) min = arr[i];
}
}
return max - min;
}
public static void main(String args[]){
// छलनी चलाएं
runSieveOfEratosthenes();
int arr[] = { 1, 2, 3, 4, 5 };
System.out.println(difference(arr));
}
}
आउटपुट
3