UVA 10924 - Prime Words
題目:
質數就是一個數字只有兩個因數:1和自己,例如:1,2,3,5,17,101和10007都是質數。
在這問題中你需要讀入一組文字,每個字是由 a-z 和 A-Z 組成,每個字母都有他的值,字母 a 值 1,字母 b 值 2 … 到字母 z 值 26,同樣的字母 A 值 27,B 值 28, Z 值 52。
你應該要寫個程式來檢查這組字是不是prime word,如果這組文字的字母值總和為質數的話,他就是 prime word。
Input
輸入含有多組測試資料,每組一列,且有 L (1 <= L <= 20)個字母。請參考Sample Input。
Output
對每一組字,如果它是 prime word 的話,輸出 "It is a prime word."。否則,請輸出 "It is not a prime word."。
Sample Input #1
UFRN
contest
AcM
a
A
Sample Output #1
It is a prime word.
It is not a prime word.
It is not a prime word.
It is a prime word.
It is not a prime word.
C++ code:
#include <bits/stdc++.h>
//#define spd ios::sync_with_stdio(false); cin.tie(0);
using namespace std;
int f(char ch) {
if (islower(ch)) {
return ch - 'a' + 1;
}
else {
return ch - 'A' + 27;
}
}
bool isprime(int n) {
for (int i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
string s;
while (cin >> s) {
int sum = 0;
for (int i = 0; i < s.size(); ++i) {
sum += f(s[i]);
}
int answer = isprime(sum);
if (answer) {
cout << "It is a prime word." << endl;
}
else {
cout << "It is not a prime word." << endl;
}
}
return 0;
}