আমাদের যেকোন দৈর্ঘ্যের একটি স্ট্রিং দেওয়া হয়েছে যাতে বড় হাতের এবং ছোট হাতের অক্ষর উভয়ই রয়েছে এবং কাজটি হল সেই অক্ষরগুলির গণনা করা যার 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