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

C++의 프라임 문자열

<시간/>

이 문제에서는 문자열이 제공됩니다. 우리의 임무는 YES / NO를 인쇄하는 것입니다. 기반은 문자열의 문자의 ASCII 값의 합이 소수인지 아닌지입니다.

ASCII 값은 문자 인코딩입니다.

소수 숫자 자체와 1로만 나누어 떨어지는 숫자입니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

Input: string = “Hello”
Output:No

이 문제를 해결하려면 문자열의 모든 문자에 대한 ASCII 값의 합을 찾아야 합니다. 그리고 그 합을 변수에 저장하고 그 합이 소수인지 아닌지를 확인한다.

솔루션 구현을 보여주는 코드

예시

#include <iostream>
using namespace std;
bool CheckPrimeString(string str) {
   int len = str.length(), sum = 0;
   for (int i = 0; i < len; i++)
   sum += (int)str[i];
   if (sum<= 1)
      return false;
   if (sum <= 3)
      return true;
   if (sum % 2 == 0 || sum % 3 == 0)
      return false;
   for (int i = 5; i * i <= sum; i = i + 6)
      if (sum % i == 0 || sum % (i + 2) == 0)
   return false;
   return true;
}
int main() {
   string str = "Hello!";
   cout<<"The string '"<<str<<" ' is ";
   if (CheckPrimeString(str))
      cout<<"a prime String \n";
   else
      cout<<"not a prime String\n";
}

출력

The string 'Hello! ' is not a prime String