Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 ASCII 값이 소수인 문자열의 문자 수 계산

<시간/>

대문자와 소문자를 모두 포함하는 임의의 길이의 문자열이 제공되며 작업은 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인 소수이므로 세게 됩니다. 따라서 프라임 ASCII 값을 갖는 총 2개의 문자가 있습니다.

Input − string str = ‘GOXFH’
Output − count is: 2

설명 − G의 ASCII 값은 71(소수이므로 계산), O는 79(소수이므로 계산), X는 88(소수가 아니므로 계산되지 않음) , F는 소수가 아니므로 계산되지 않는 70이고 H는 소수가 아니므로 계산되지 않는 72입니다. 따라서 프라임 ASCII 값을 갖는 총 2개의 문자가 있습니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 문자열을 입력하고 변수에 저장합니다. str

  • 공백을 포함한 문자열의 문자 수에 따라 정수 값을 반환하는 length() 함수를 사용하여 문자열 str의 길이를 계산합니다.

  • 결정된 모든 문자에 대해 확인할 소수 값을 계산하는 함수를 선언합니다.

  • 문자열의 길이까지 i에서 0까지 루프를 순회합니다.

  • 루프 내에서 순회하는 문자의 ASCII 값이 소수인지 확인합니다. 소수인 경우 개수를 1씩 늘리고 그렇지 않으면 값을 늘리지 않습니다.

  • count의 총 값을 반환합니다.

  • 결과를 인쇄하십시오.

#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