1015. Reversible Primes (20)

来源:互联网 发布:java图片保存到服务器 编辑:程序博客网 时间:2024/06/14 03:02

题目大意:

给一个x进制数字N,如果这个数在x进制下是质数,并且在x进制下高低位逆转后还是质数就输出Yes,否则输出No

分析:

IsPrime(int a) 判断是否为质数
把N写成x进制的数,在逆转过来得到逆转质数,再求十进制下的结果。
23 是质数。 23写成2进制是10111,逆转后是11101,转换为10进制为29同样是质数。

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<math.h>int Renum2dec(int numdec, int radix) //23 2  10111  11101  {                                    //73 10  73 -> 37    int N[100];    int i = 0;    while (numdec) {        N[i++] = numdec % radix;        numdec /= radix;    }    int res = 0, temp = 1; //数组右边为低位    for (int j = i - 1; j >= 0; j--) {        res += N[j] * temp;        temp *= radix;    }    return res;}int IsPrime(int a){    int i;    for (i = (int)sqrt(a); i >=2 ; i--) {        if (a %i == 0)            break;    }    if (i == 1 && a != 1)        return 1;    else        return 0;}int main(){    int D, N;    scanf("%d", &N);    while (N >= 0) {        scanf("%d", &D);        int a = N;        int b = Renum2dec(N, D);        if (IsPrime(a) && IsPrime(b))            printf("Yes\n");        else            printf("No\n");        scanf("%d", &N);    }    return 0;}
0 0
原创粉丝点击