(Pat甲)1015 Reversible Primes

it2022-05-08  9

首先说明一下题意,就是输入一个数,然后判断它是不是素数,如果是,将它进行进制转换,转换后得到的数再次进行素数判断,如果是素数。就输出Yes,否则输出No

#include<cmath> #include<cstdio> bool isPrime(int n)//判断素数,特别注意n为1的情况, { if(n==1) return false; for (int i = 2; i < n; i++) if (n % i == 0 && i < n) return false; return true; } int d[10000]; int main() { int n, radix;//radix为进制 while (scanf("%d",&n) != EOF) { if (n < 0) break; scanf("%d", &radix); if (isPrime(n) == false) { printf("No\n"); } else { int len = 0; do//进制转换 { d[len++] = n % radix; n /= radix; } while (n != 0); for (int i = 0; i < len; i++) { n = n * radix + d[i];//按逆序转换进制 } if (isPrime(n) == true) printf("Yes\n"); else printf("No\n"); } } return 0; }

最新回复(0)