이 문제에서는 문자열이 제공됩니다. 우리의 임무는 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