1015個のリバーシブル素数(20分)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_42582136/article/details/102653070

任意の数のシステムにおいて可逆プライムは、その「逆」という数システムにおいても素数である素数です。その逆37も素数であるので、例えば小数システム73に可逆素数です。

今、任意の2つの正の整数N(<10与えられた
5
)とD(1 <D≤10)、あなたはNが基数D.との可逆素数であるかどうか言うことになっています

入力仕様:
入力ファイルは、いくつかのテストケースで構成されています。それぞれの場合は、入力が負Nで終了するNおよびD 2つの整数を含む行を占め

出力仕様:
Nは基数Dと可逆素数である、またはNoならない場合には、各テストケースについては、はい一列に印刷。

サンプル入力:
73 10
23 2
23 10
-2
のサンプル出力:
はい
はい
いいえ

#include<bits/stdc++.h>
using namespace std;
bool is_prime(long long n) {
	if (n < 2) return  false;
	for (int i = 2; i <= sqrt(n); i++)
		if (n % i == 0) return false;
	return true;
}
int rev(int m, int n) {
	vector<int>re;
	string str;
	while (m) {
		re.push_back(m % n);
		m /= n;
	};
	reverse(re.begin(), re.end());
	int sum = 0;
	for (int i = 0; i < re.size(); i++)
		sum += pow(n, i) * re[i];
	return sum;
}
int main()
{
	int m, n;
	vector<string>re;
	while (cin >> m && m >= 0){
		cin >> n;
		cout << (is_prime(m) && is_prime(rev(m, n)) ? "Yes" : "No") << endl;
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_42582136/article/details/102653070