)
【題目來源】https://oj.czos.cn/p/1138【題目描述】一個兩位整數(shù) A 本身是素數(shù)若將其個位數(shù)字與十位數(shù)字交換得到一個新的兩位數(shù) B而 B 也是素數(shù)我們則稱 A 為無暇素數(shù)。例如31 是素數(shù)個位數(shù)字與十位數(shù)字交換后得到 13也是素數(shù)。所以 31 是無暇素數(shù)。問題給出一個數(shù)字字符串即字串中的字符全部由數(shù)字組成求出其所有長度為 2 的子串組成的無暇素數(shù)?!据斎敫袷健恳粋€數(shù)字字符串長度20以%結(jié)束?!据敵龈袷健咳康臒o暇素數(shù)之間用一個逗號隔開。???????【輸入樣例】321314%???????【輸出樣例】13,31【數(shù)據(jù)范圍】數(shù)字字符串長度20【算法分析】● 判斷素數(shù)的經(jīng)典代碼bool isPrime(int n) { if(n2) return false; for(int i2; i*in; i) { if(n%i0) return false; } return true; }● 本題使用的一種格式化輸出的代碼#include bits/stdc.h using namespace std; int main() { int n; cinn; bool firsttrue; for(int i1; in; i) { if(!first) cout,; couti; firstfalse; } return 0; } /* in:5 out:1,2,3,4,5 */● 注意數(shù)字與字符之間的轉(zhuǎn)換方法。例如7-07707?!舅惴ùa】#include bits/stdc.h using namespace std; bool isPrime(int n) { if(n2) return false; for(int i2; i*in; i) { if(n%i0) return false; } return true; } int main() { string s; cins; bool firsttrue; for(int i0; is.size()-2; i) { int a(s[i]-0)*10(s[i1]-0); int b(a%10)*10a/10; if(isPrime(a) isPrime(b)) { if(!first) cout,; couta; firstfalse; } } return 0; } /* in:321314% out:13,31 */【參考文獻】https://blog.csdn.net/hnjzsyjyj/article/details/163876393