1. 程式人生 > >1015. Reversible Primes (20)

1015. Reversible Primes (20)

進制 har ever end inf gpo com log style

距離PAT考試還有13天最重要的是做透每一題

(1)思路

就是按照題目說的做

又把stringstream熟悉了一遍,輸入到stringstream後可以輸出到一個string對象

又把進制轉換練習了一遍,10->d進制就是不斷取余的過程,d->進制就是各位的權與各位相乘後相加

質數的判斷就是除了1和它本身沒有其他公因數的數 小於等於1時不是質數

string中的某個元素如下面的ans[i]的類型是char

雖然這裏沒用到

atoi()配合c_str()可以將一個string轉成int型的值

此時要包含<cstdlib>

#include <cstdio>
#include 
<string> #include <sstream> #include <cstdlib> #include <cmath> #include <vector> #include <iostream> using namespace std; string to_rd(int a,int b) { stringstream ss; string s; while(a) { ss<<a%b; a/=b; } ss>>s; return
s; } int to_10(string ans,int b) { int res=0; for(int i=0;i<ans.size();i++) { res=res*b+ans[i]-0; } return res; } bool is_prime(int n) { if(n <= 1) return false; int flag=0; for(int i=2;i<=sqrt(n);i++) { if(n % i == 0) flag=1; } return flag==1? false:true
; } string f(int a,int b) { string ans=to_rd(a,b); int ians=to_10(ans,b); if(is_prime(ians) && is_prime(a)) return "Yes"; else return "No"; } int main() { int a,b; while(1) { scanf("%d",&a); if(a < 0) return 0; scanf("%d",&b); cout<<f(a,b)<<endl; } return 0; }

技術分享圖片

1015. Reversible Primes (20)