首页 > 代码库 > PAT1015 Reversible Primes
PAT1015 Reversible Primes
题目:PAT1015
题解:一道不多难的题,就是麻烦了点,把其中的细节处理好就行。
首先要搞清楚问的是什么:给你一个十进制的数n,然后让你取n在d进制下的反序数并转换为10进制(这里假设为n1),问n和n1是否都为素数。
所以我大概就写了检查是否为素数的函数,转换进制的函数以及取反序的函数。
刚开始忘了考虑n,很无语...后来还是有个点不过,才想起来1既不是素数也不是合数,要把1的情况考虑进去。
代码:
1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 using namespace std; 5 6 int n,d,cou,num[64]; 7 8 bool isPrime(int n)//是否为素数 9 { 10 if(n==1) return false; 11 for(int i=2;i<=sqrt(n);i++) 12 { 13 if(n%i==0) return false; 14 } 15 return true; 16 } 17 18 void tran(int t)//10进制转换d进制 19 { 20 cou=0; 21 while(t!=0) 22 { 23 num[cou]=t%d; 24 t=t/d; 25 cou++; 26 } 27 cou--; 28 } 29 30 int tran2()//取反序数 31 { 32 int result=0,mid; 33 for(int i=0;i<=cou;i++) 34 { 35 mid=1; 36 for(int j=0;j<cou-i;j++) 37 { 38 mid*=d; 39 } 40 result+=(num[i]*mid); 41 } 42 return result; 43 } 44 45 int main() 46 { 47 while(scanf("%d",&n)&&n>=0) 48 { 49 50 scanf("%d",&d); 51 52 tran(n); 53 54 55 bool f=isPrime(tran2());//检查反序数是否为素数 56 57 if(f&&isPrime(n)) printf("Yes\n"); 58 else printf("No\n"); 59 60 } 61 62 return 0; 63 }
PAT1015 Reversible Primes
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。