任意進位制下的可逆素數 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++字串
- c++的進位制轉換C++
- [20191011]bash任意進位制編碼表.txt
- 資料結構–進位制(任意)轉換資料結構
- 負數補碼(16進位制轉10進位制的負數)
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 八進位制,十六進位制和浮點數
- 1161:轉進位制(C C++)C++
- 根據數字二進位制下 1 的數目排序排序
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 在c語言中輸出8進位制數,16進位制數C語言
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 2^k進位制數
- 1417 二進位制數的大小
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出
- printf()將10進位制數安照輸出16進位制,8進位制輸出
- 進位制詳解:二進位制、八進位制和十六進位制
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 負數的二進位制數問題
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 力扣 根據數字二進位制下1的數目排序力扣排序
- C++資料格式化5 - uint轉換成十六進位制字串&二進位制的data列印成十六進位制字串C++UI字串
- C語言中printf打出2進位制與16進位制數C語言
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 教你如何進行數倉字串、二進位制、十六進位制互轉字串
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- c++ 16進位制資料轉doubleC++
- C++實現進位制轉換工具C++
- 二進位制中1的個數
- 輸出二進位制數
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java