• PAT A1015 Reversible Primes(可逆素数)



    这是一道素数判断问题,虽然思路很明确,要注意的是文中的D代表的是素数的进制,但是素数的判断要在十进制的范围内来做。

    • 一点经验:如果说一道题目已经拿到了大部分的分数,说明代码整体是正确的,只是一些输入的特殊情况没有考虑在内,此时应该重新读题,发现并考虑如何处理这些特殊输出
    • 例如bool isprime(int n)函数中对于if(n <= 1 ) return false;的边界判断
    #include<cstdio>
    #include<math.h>
    using namespace std;
    const int N = 100010;
    
    bool isprime(int n){
        if(n <= 1 ) return false;
        int half = (int)sqrt(n*1.0);
        bool is_prime = true;
        for(int i = 2;i <= half; i ++){
            if(n%i==0){
                is_prime = false;
            }
        }
        return is_prime;
    }
    
    int reverse(int n,int d){
        int int_array[N];
        int count = 0;
        int result = 0;
        while(n){
            int_array[count++] = n%d;
            n = n/d;
        }
        for(int i = 0;i < count;i++){
            result = result*d+int_array[i];
        }
        return result;
    }
    
    int main(){
        int n,d;
        scanf("%d",&n);
        while(n>0){
            scanf("%d",&d);
            if(!isprime(n)){
                printf("No");
            }else{
                int r = reverse(n,d);
                isprime(r)?printf("Yes"):printf("No");
            }
            printf("
    ");
            scanf("%d",&n);
        }
        return 0;
    }
    
  • 相关阅读:
    HDOJ 450题留念
    有关VIM的一些笔记
    hdu 2715
    POJ 1004
    链表的创建,添加结点,打印...
    C++ 静态数据成员小谈
    自定义String类
    sizeof/strlen小论
    多态之重载多态运算符重载那些事
    01背包问题
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13559032.html
Copyright © 2020-2023  润新知