【每天一道PAT】 1015 Reversible Primes

时间:2020-04-13 11:26:59   收藏:0   阅读:75

思路

判断原数和“取反”后数是否为素数
1.用vector存储“取反”时用到的数字

#include <cstdio>
#include <cmath>
#include <vector>
using namespace std;
bool is_prime(int n) {
    if(n <= 1) return false;
    int sqr = int(sqrt(n * 1.0));
    for(int i = 2; i <= sqr; i++) {
        if(n % i == 0)
            return false;
    }
    return true;
}
//取反,注意基数
int reverse(int n,int r)
{
    vector<int> num;
    int result = 0;
    do {
        num.push_back(n%r);
        n /= r;
    }while (n != 0);
    for (int i = num.size()-1; i >= 0 ; --i) {
        result += num[num.size()-i-1]*pow(r,i);
    }
    return result;
}
int main()
{
    int N,D;//原数,基数
    while(scanf("%d %d",&N,&D) ,N>0)
    {
        if(is_prime(N)&&is_prime(reverse(N,D))) printf("Yes\n");
        else printf("No\n");
    }
}

原文:https://www.cnblogs.com/xinyuLee404/p/12690103.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!