#include<bits/stdc++.h>usingnamespace std;constint maxn =100010;int ans[maxn], len =0;voidchange(int n,int radix){do{
ans[len++]= n % radix ;
n /= radix;}while(n >0);}inttoDecimal(int n,int radix){int res =0;for(int i =0; i < len; i++)
res = res * radix + ans[i];return res;}boolisPrime(int x){if(x <=1)returnfalse;for(int i =2; i * i <= x;++i){if(x % i ==0)returnfalse;}returntrue;}intmain(){int n, radix;while(1){scanf("%d",&n);if(n <0)return0;elsescanf("%d",&radix);if(isPrime(n)){
len =0;change(n, radix);int com =toDecimal(n, radix);if(isPrime(com))printf("Yes\n");elseprintf("No\n");}elseprintf("No\n");}}
T2 code:
#include<bits/stdc++.h>usingnamespace std;boolisPrime(int x){if(x <2)returnfalse;int sqr =(int)sqrt(1.0* x);for(int i =2; i <= sqr;++i){if(x % i ==0)returnfalse;}returntrue;}//TIPS:最好用isPrime判断,素数表可能会范围出错
string Change(int n,int radix){if(radix ==10)returnto_string(n);
string ans;do{char dig = n % radix +'0';
ans = dig + ans;
n /= radix;}while(n);return ans;}inttoDecimal(string s,int radix){int ans =0;for(int i =0; i < s.size();++i){
ans = ans * radix + s[i]-'0';}return ans;}
string Rev(string n){reverse(n.begin(), n.end());return n;}intmain(){int n, radix;while(scanf("%d %d",&n,&radix)==2){if(isPrime(n)&&isPrime(toDecimal(Rev(Change(n, radix)), radix)))printf("Yes\n");//注意n == 1 elseprintf("No\n");}return0;}
T3 code:
#include<bits/stdc++.h>usingnamespace std;boolisPrime(int n){if(n <2)returnfalse;int sqr =sqrt(1.0* n);for(int i =2; i <= sqr;++i){if(n % i ==0)returnfalse;}returntrue;}intChange(int n,int b){int ans =0;do{
ans = ans * b + n % b;
n /= b;}while(n);return ans;}intmain(){int n1, n2;while(scanf("%d",&n1)!=EOF&& n1 >0){scanf("%d",&n2);printf("%s\n",isPrime(n1)&&isPrime(Change(n1, n2))?"Yes":"No");}return0;}
T4 code:
#include<bits/stdc++.h>usingnamespace std;typedeflonglong ll;boolisPrime(int x){if(x <2)returnfalse;int sqr =sqrt(1.0* x);for(int i =2; i <= sqr;++i){if(x % i ==0)returnfalse;}returntrue;}
ll Change(int x,int b){
ll ans =0, d =1;do{
ans += x % b * d;
x /= b;
d *=10;}while(x >0);return ans;}intToDecimal(ll n,int b){int ans =0;do{int dig = n %10;
n /=10;
ans = ans * b + dig;}while(n >0);return ans;}intmain(){int n, b;while(scanf("%d %d",&n,&b)!=EOF&& n >0){if(!isPrime(n)){printf("No\n");continue;}int other =ToDecimal(Change(n, b), b);printf("%s\n",isPrime(other)?"Yes":"No");}return0;}