हमें किसी भी लंबाई की एक स्ट्रिंग दी गई है जिसमें अपरकेस और लोअरकेस दोनों अक्षर हैं और कार्य उन वर्णों की संख्या की गणना करना है जिनके ASCII मान अभाज्य हैं।
अपरकेस अक्षरों[A-Z] के ASCII मान 65 से शुरू होकर 90 तक होते हैं और लोअरकेस अक्षरों[a-z] के ASCII मान 97 से शुरू होकर 122 तक होते हैं।
उदाहरण के लिए
इनपुट string str = 'Aebg' आउटपुट गिनती: 2
व्याख्या - A का ASCII मान 65 है जो एक गैर-अभाज्य संख्या है इसलिए इसे नहीं गिना जाएगा, e का मान 101 है जो एक अभाज्य संख्या है इसलिए इसे गिना जाएगा, b का मान 66 है जो एक गैर-अभाज्य संख्या है इसलिए इसे नहीं गिना जाएगा और g का मान 103 है जो एक अभाज्य संख्या है इसलिए इसे गिना जाएगा। इसलिए, कुल मिलाकर 2 वर्ण हैं जिनके ASCII मान अभाज्य हैं।
इनपुट - string str = 'GOXFH' आउटपुट - गिनती: 2
व्याख्या - G का ASCII मान 71 है जो एक अभाज्य संख्या है इसलिए इसे गिना जाएगा, O का मान 79 है जो एक अभाज्य संख्या है इसलिए इसे गिना जाएगा, X का मान 88 है जो एक गैर-अभाज्य संख्या है इसलिए इसे नहीं गिना जाएगा, F का मान 70 है जो अभाज्य संख्या नहीं है इसलिए इसे नहीं गिना जाएगा और H का मान 72 है जो अभाज्य संख्या नहीं है इसलिए इसे नहीं गिना जाएगा। इसलिए, कुल मिलाकर 2 वर्ण हैं जिनके ASCII मान अभाज्य हैं।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
स्ट्रिंग इनपुट करें और इसे str जैसे चर में संग्रहीत करें
length() फंक्शन का उपयोग करके स्ट्रिंग str की लंबाई की गणना करें जो स्ट्रिंग में स्पेस सहित अक्षरों की संख्या के अनुसार एक पूर्णांक मान लौटाएगा।
एक फंक्शन घोषित करें जो अभाज्य मान की गणना करेगा जिसे हम हर निर्धारित अक्षर के विरुद्ध जांचेंगे
लूप को i से 0 से शुरू करके स्ट्रिंग की लंबाई तक पार करें
लूप के अंदर, जांचें कि क्या पार किए गए वर्ण का ASCII मान अभाज्य है या नहीं। यदि यह अभाज्य है, तो count को 1 से बढ़ाएं अन्यथा मान को न बढ़ाएं।
count का कुल मान लौटाएं
परिणाम प्रिंट करें।
उदाहरण
#include <iostream>
#include <vector>
using namespace std;
#define max_val 257
// स्ट्रिंग में अभाज्य वर्ण खोजने के लिए फंक्शन
int countprime(string str) {
// 'max_val' से कम या बराबर अभाज्य संख्याओं को खोजने के लिए SIEVE का उपयोग
// एक बूलियन सरणी "prime[0..n]"। एक
// मान prime[i] में अंततः false होगा
// यदि i अभाज्य नहीं है, अन्यथा true।
vector<bool> prime(max_val + 1, true);
// 0 और 1 अभाज्य नहीं हैं
prime[0] = false;
prime[1] = false;
for (int p = 2; p * p <= max_val; p++) {
// यदि prime[p] बदला नहीं गया है, तो
// यह एक अभाज्य संख्या है
if (prime[p] == true) {
// p के सभी गुणकों को अपडेट करना
for (int i = p * 2; i <= max_val; i += p) {
prime[i] = false;
}
}
}
int result = 0;
// पूरी स्ट्रिंग को पार करना।
for (int i = 0; i < str.length(); ++i) {
if (prime[int(str[i])]) {
result++;
}
}
return result;
}
// मुख्य फंक्शन
int main() {
string str = "tutorialspoint";
// आवश्यक उत्तर प्रिंट करें
cout << "count is: " << countprime(str);
return 0;
}
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
count is:1