任意進位制下的可逆素數 C++
題目描述
任意進位制下的可逆素數是這樣定義的:它自身是一個素數,當它轉換為任意進位制之後,把所有數字逆序,得到的新數字的值仍然是一個素數。比如,73在十進位制下是一個素數,它在十進位制下的逆37也是一個素數,那就稱它是十進位制下是一個可逆素數。
輸入格式:
輸入有多行,每行包括兩個正整數,數N以及基R,其中N<100000, 1<D<=10, 遇到負數則退出。
輸出格式:
對每一行輸入,如果是可逆素數,則輸出“Yes”,否則輸出“No”
輸入樣例:
在這裡給出一組輸入。例如:
73 10
23 2
23 10
-2
輸出樣例:
在這裡給出相應的輸出。例如:
Yes
Yes
No
樣例說明:23的二進位制是10111,其逆為11101,對應的十進位制數是29,所以是可逆素數。
參考程式碼
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
int N,D;
int a[100005];
int f()
{
int sum = 0;
int i = 1;
int t2 = 1;
while(N)
{
a[i++] = N%D;
N /= D;
}
for(int j = i-1;j>=1;j--)
{
sum += a[j]*t2;
t2 *= D;
}
return sum;
}
bool isprime(int t1)
{
if(t1==1)
return false;
for(int i = 2;i*i<=t1;i++)
{
if(t1%i==0)
return false;
}
return true;
}
int main()
{
//freopen("test.in","r",stdin);
//freopen("test.out","w",stdout);
int t;
while(scanf("%d",&N)==1)
{
if(N>0)
scanf("%d",&D);
else
break;
t = f();
if(isprime(t))
cout <<"Yes"<<endl;
else
cout <<"No"<<endl;
}
return 0;
}
相關文章
- C++實現任意進位制的相互轉換C++
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 十進位制轉換任意進位制--鏈棧實現
- 計算機求解10進位制轉換任意進位制計算機
- .C++整數的N進位制字串表示C++字串
- lua之m進位制轉換為n進位制-任意進位制轉換演算法演算法
- 任意進位制轉換演算法演算法
- 十六進位制數轉十進位制
- c++的進位制轉換C++
- 資料結構–進位制(任意)轉換資料結構
- 負數補碼(16進位制轉10進位制的負數)
- 八進位制,十六進位制和浮點數
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 數的進位制轉換
- 根據數字二進位制下 1 的數目排序排序
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 進位制均值-進位制轉換+最大公約數
- c++ 16進位制輸出C++
- 在c語言中輸出8進位制數,16進位制數C語言
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 2^k進位制數
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- JavaScript 進位制轉換(2進位制、8進位制、10進位制、16進位制之間的轉換)JavaScript
- JavaScript 二進位制數字轉換為十進位制JavaScript
- printf()將10進位制數安照輸出16進位制,8進位制輸出
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 進位制詳解:二進位制、八進位制和十六進位制
- 負數的二進位制數問題
- C# 2進位制、8進位制、10進位制、16進位制...各種進位制間的輕鬆轉換C#
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- 力扣 根據數字二進位制下1的數目排序力扣排序
- C語言中printf打出2進位制與16進位制數C語言
- javascript十進位制數字和二進位制相互轉換JavaScript
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機