ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1015 Reversible Primes (20分)

2021-01-05 09:32:05  阅读:205  来源: 互联网

标签:puts int res 质数 Reversible 可逆 1015 Primes 十进制


我丢,又读假题了。。。理解成十进制系统下的质数判断了

看到系统,不免想起被离散支配的恐惧+_+

题意

给定两个整数 \(N\) 和 \(D\),如果 \(N\) 是一个质数,并且将 \(N\) 转化为 \(D\) 进制表示后,再进行反转,得到的新数字转化为十进制表示后如果也是一个质数,则称 \(N\) 在 \(D\) 进制系统中,是一个可逆质数。

例如,\(N = 73,D = 10\),则 \(73\) 是质数,其十进制表示反转后为 \(37\) 也是质数,所以 \(73\) 在十进制系统中是一个可逆质数。

\(N = 23,D = 2\),则 \(23\) 是质数,其二进制表示为 \(10111\),反转后得到 \(11101\),转化为十进制后为 \(29\),这也是一个质数,所以 \(23\) 在二进制系统中是一个可逆质数。

现在,请你判断所给 \(N\) 在 \(D\) 进制系统中是否是一个可逆质数。

int n,r;

int to_ten(string s,int r)
{
    int res=0;
    for(int i=0;i<s.size();i++)
    {
        res=res*r+s[i]-'0';
    }
    return res;
}

bool isprime(int x)
{
    if(x<2) return false;
    for(int i=2;i*i<=x;i++)
    {
        if(x % i == 0)
            return false;
    }
    return true;
}

int main()
{
    while(cin>>n)
    {
        if(n<0) break;
        cin>>r;

        if(!isprime(n))
        {
            puts("No");
            continue;
        }

        int res=0;
        while(n)
        {
            res=res*r+n%r;
            n/=r;
        }

        if(isprime(res)) puts("Yes");
        else puts("No");
    }
    //system("pause");
    return 0;
}

标签:puts,int,res,质数,Reversible,可逆,1015,Primes,十进制
来源: https://www.cnblogs.com/fxh0707/p/14233889.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有