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