আমাদের যেকোন দৈর্ঘ্যের একটি স্ট্রিং দেওয়া হয়েছে যাতে বড় হাতের এবং ছোট হাতের অক্ষর উভয়ই রয়েছে এবং কাজটি হল সেই অক্ষরগুলির গণনা করা যার ASCII মান প্রাইম।
বড় হাতের অক্ষর [A-Z] এর ASCII মান 65 থেকে 90 পর্যন্ত শুরু হয় এবং ছোট হাতের অক্ষর [a-z] 97 থেকে 122 পর্যন্ত শুরু হয়।
উদাহরণস্বরূপ
Input string str = ‘Aebg’ Output count is: 2
ব্যাখ্যা − A-এর ASCII মান হল 65 যা একটি নন-প্রাইম সংখ্যা তাই এটি গণনা করা হবে না, e হল 101 যা একটি মৌলিক সংখ্যা তাই এটি গণনা করা হবে, b হল 66 যা একটি নন-প্রাইম সংখ্যা তাই এটি গণনা করা হবে না গণনা করা হবে এবং g হল 103 যা একটি মৌলিক সংখ্যা তাই এটি গণনা করা হবে। অতএব, মোট 2টি অক্ষর আছে যার প্রাইম ASCII মান রয়েছে।
Input − string str = ‘GOXFH’ Output − count is: 2
ব্যাখ্যা − G এর ASCII মান হল 71 যা একটি মৌলিক সংখ্যা তাই এটি গণনা করা হবে, O হল 79 যা একটি মৌলিক সংখ্যা তাই এটি গণনা করা হবে, X হল 88 যা একটি নন-প্রাইম সংখ্যা তাই এটি গণনা করা হবে না , F হল 70 যা একটি মৌলিক সংখ্যা নয় তাই এটি গণনা করা হবে না এবং H হল 72 যা একটি মৌলিক সংখ্যা নয় তাই এটি গণনা করা হবে না। অতএব, মোট 2টি অক্ষর আছে যার প্রাইম ASCII মান রয়েছে।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
স্ট্রিংটি ইনপুট করুন এবং এটিকে একটি ভেরিয়েবলে সংরক্ষণ করুন আসুন str
বলি -
length() ফাংশন ব্যবহার করে স্ট্রিং স্ট্র এর দৈর্ঘ্য গণনা করুন যা স্পেস সহ স্ট্রিং এর অক্ষর সংখ্যা অনুযায়ী একটি পূর্ণসংখ্যার মান প্রদান করবে।
-
মৌলিক মান গণনা করার জন্য একটি ফাংশন ঘোষণা করুন যা আমরা নির্ধারিত প্রতিটি অক্ষরের বিপরীতে পরীক্ষা করব
-
i থেকে শুরু করে একটি স্ট্রিং এর দৈর্ঘ্য পর্যন্ত লুপটি অতিক্রম করুন
-
লুপের ভিতরে, ট্রাভার্স করা একটি অক্ষরের ASCII মান প্রাইম কিনা তা পরীক্ষা করুন। যদি এটি একটি প্রাইম হয়, তাহলে 1 দ্বারা গণনা বাড়ান অন্যথায় মান বাড়াবেন না।
-
গণনার মোট মান ফেরত দিন
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
#include <iostream> #include <vector> using namespace std; #define max_val 257 // Function to find prime characters in the string int countprime(string str){ // Using SIEVE for finding the prime numbers less // than Equal to 'max_val' // A Boolean array "prime[0..n]". A // value in prime[i] will finally be false // if i is Not a prime, else true. vector<bool> prime(max_val + 1, true); // 0 and 1 are not primes prime[0] = false; prime[1] = false; for (int p = 2; p * p <= max_val; p++){ // If prime[p] is not changed, then // it is a prime if (prime[p] == true) { // Upfating the all multiples of p for (int i = p * 2; i <= max_val; i += p){ prime[i] = false; } } } int result = 0; // traversing the whole string. for (int i = 0; i < str.length(); ++i){ if (prime[int(str[i])]){ result++; } } return result; } // main function int main(){ string str = "tutorialspoint"; // print required answer cout <<"count is: "<< countprime(str); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেcount is:1