pat-1015 Reversible Primes (进制转换,逆序输出,判断素数,细节很重要)

本文探讨PAT1015题目的解决方法,涉及进制转换、数字逆序以及素数判断。通过逐步操作,需注意实现过程中的细节问题,初稿代码较为冗余,经优化后实现简洁。
摘要由CSDN通过智能技术生成

 

这篇博客内容有待我修改!-8.15 留

 

题目链接

思路:

进制转换,逆序输出,判断素数,一步步做就可以了,不过要注意细节!刚开始很麻烦的写了一百多行,把一个函数拆成两个函数写,重复的部分很多,删删改改简化了一下。

#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <cmath>

using namespace std;
bool is_prime(int a){
    int i;
    if(a == 1|| a == 0)//注意特殊情况
        return false;
    
    for(i = 2;i <= sqrt((double)a);i++){
        if(a % i == 0)
            return false;
    }
    
    return true;
}
int turn(int num,int  k){
    int a[100],i,j,res;
    i = 0;
    while(num != 0){
        a[i] = num % k;
        i++;//注意这里的i++不要合并写成a[i++]这样第一个数输入的是a[1]
        num /= k;
    }
    res = 0;
    for(j = i - 1;j >= 0;j--){//同时翻转数字的每一位 && 输出这个数字
        res += a[j] * pow(k,i-j-1);
        //printf("res:   %d\n",res);
    }

    return res;
    
}


int main() {
    int n,d,k;
    while(~scanf("%d",&n) ){
        if(n<0)
            break;
        scanf("%d",&d);
        k=turn(n, d);
        if(is_prime(n) && is_prime(k))//它本身是不是素数也要判断的
            printf("Yes\n");
        else
            printf("No\n");
       
        
        
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值