本体是输入的N只要不是附属就继续读取数字,第一个是十进制数,第二个是代表要转化的进制。
23 2代表23再2进制转化的结果,再进行反转得到十进制是29也是质数。
构建质数判别器,=1返回不是质数,接下来能被整除也不是质数
构建反转后的值,通过while,进行更新进制值
最后把这两个都丢进质数判别,就可以了
质数检测
bool is_prime(int n) { if (n == 1) return false; for (int i = 2; i <= n / i; i ++ ) if (n % i == 0) return false; return true; }
进制更新操作
long long res = 0; while(n) { res = res * r + n % r; n /= r; }
还有puts的shiyong,直接输出一个完整的字符串
#include<iostream> #include<algorithm> using namespace std; bool is_prime(int n) { if (n == 1) return false; for (int i = 2; i <= n / i; i ++ ) if (n % i == 0) return false; return true; } bool check(int n, int r) { if (!is_prime(n)) return false; long long res = 0; while(n) { res = res * r + n % r; n /= r; } if (is_prime(res)) return true; else return false; } int main() { int n, r; while(cin >> n >> r, n >= 1) { if (check(n, r)) puts("Yes"); else puts("No"); } return 0; }