计算C ++中ASCII值是质数的字符串中的字符

我们给了一个任意长度的字符串,该字符串包含大写和小写字母,任务是计算ASCII值为素数的那些字符的计数。

大写字母[AZ]的ASCII值从65到90开始,小写字母[az]的ASCII值从97到122开始。

例如

Input string str = ‘Aebg’Output count is: 2

说明-A的ASCII值是65,这是一个非素数,因此不会被计算; e是101,这是一个素数,因此它将被计算; b是66,这是一个非素数,因此它不会' t被计数,并且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()函数计算字符串str的长度,该函数将根据字符串中包含空格的字母数返回一个整数值。

  • 声明一个函数来计算素数,我们将根据确定的每个字母检查素数

  • 遍历从i到0直到字符串长度的循环

  • 在循环内部,检查所遍历字符的ASCII值是否为质数。如果是质数,则将计数增加1,否则不要增加值。

  • 返回计数的总值

  • 打印结果。

示例

#include <iostream>
#include <vector>
using namespace std;
#define max_val 257
//查找字符串中的主要字符的功能
int countprime(string str){
   //使用SIEVE减少质数
   //比等于'max_val'
   // A Boolean array "prime[0..n]". A
   //prime [i]中的值最终将为false-
   //如果我不是素数,否则为真。
   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 = "nhooo";
   //打印所需答案
   cout <<"count is: "<< countprime(str);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

count is:1