30、<简单>求无暇素数
#include iostream #include string #include vector using namespace std; // 判断是否为素数 bool isPrime(int num) { if (num 2) return false; for (int i 2; i * i num; i) { if (num % i 0) return false; } return true; } // 判断两位数是否是无暇素数 bool isPerfectPrime(int twoNum) { int shi twoNum / 10; int ge twoNum % 10; int reverseNum ge * 10 shi; return isPrime(twoNum) isPrime(reverseNum); } int main() { cout 输入说明输入纯数字字符串末尾必须带%结束总长度小于20 endl; cout 功能提取所有长度为2的连续子串筛选无暇素数逗号分隔输出 endl; cout 请输入字符串; string s; cin s; // 移除末尾的%符号 s.pop_back(); vectorint result; int strLen s.size(); // 遍历所有长度为2的连续子串 for (int i 0; i strLen - 2; i) { // 截取两位字符转数字 int num (s[i] - 0) * 10 (s[i 1] - 0); if (isPerfectPrime(num)) { result.push_back(num); } } cout \n符合条件的无暇素数; // 按逗号分隔输出 for (int i 0; i result.size(); i) { if (i 0) cout ,; cout result[i]; } cout endl; return 0; }