pat 1015
来源:互联网 发布:安卓好的看书软件 编辑:程序博客网 时间:2024/05/21 16:55
1、题目链接
2、题意分析
(1)题意:给出一个数字N,并且给出一个进制radix,请你判断,这个数字N,以及这个数字在进制radix下的反转数是否都为素数?
(2)分析:我们需要三个函数来完成上述的功能(包含main()函数)。第一个是isPrime()函数,用来判断是否为素数;第二个是将当前的数在进制radix中转换成反转数,然后再转换成十进制的数,我称之为reverse()函数;第三个是main()函数,作为程序的入口。
3、关于如何判断是否为素数,这在之前我已经谈及过,这里不再做介绍,直接给出代码如下:
//判断一个数是否为素数 bool isPrime(int total){if(total < 2){//如果是2,则直接返回true return true;}
int i ;for(i = 2;i <= (int)sqrt(1.0 * total);i++){//素数判断从2开始 if(total % i == 0){return false;//返回false }}return true;//这里直接的返回包含了total = 2的情况【重要!!】}再实现反转函数,如下:
//在当前radix进制反转后,转换成十进制数total intreverse(int a ,int radix){//a为数,radix为进制 int total = 0 ,i = 0 ,j ;int array[size];while(a!=0){//为了得到各位上的数 ---> 需要除以10 array[i++] = a % radix;a /= radix;} for(j = 0;j < i;j++){total = total * radix + array[j];}//printf("反转后 = %d\n",total);return total;}4、源代码
#include <stdio.h>#include <math.h>#define size 100//6位足够/*1.如果一个数是素数,那么无论在什么进制下都是素数!*/ //在当前radix进制反转后,转换成十进制数total intreverse(int a ,int radix){//a为数,radix为进制 int total = 0 ,i = 0 ,j ;int array[size];while(a!=0){//为了得到各位上的数 ---> 需要除以10 array[i++] = a % radix;a /= radix;} for(j = 0;j < i;j++){total = total * radix + array[j];}//printf("反转后 = %d\n",total);return total;}//判断一个数是否为素数 bool isPrime(int total){if(total < 2){//如果是0,1,2,则直接返回true return false;}int i ;for(i = 2;i <= (int)sqrt(1.0 * total);i++){//素数判断从2开始 if(total % i == 0){return false;//返回false }}return true;} int main(){int number;int radix;while(scanf("%d %d",&number,&radix) == 2 ){if(number < 0){break;}if(number == 1 || number == 0){printf("No\n");}else{if(isPrime(number)){int total2 = reverse(number,radix);if(isPrime(total2)){printf("Yes\n");}elseprintf("No\n"); }elseprintf("No\n");}}} /**73 1023 223 100 2-2 31 2*/
5、题目坑点
(1)需要注意输入1 2的时候输出是No,因为1不是素数。【重要!!】在判断素数的时候,需要使用if(total <= 1)另加判断一次。
(2)需要注意一些特殊数字,例如,有一些数字本身是素数,反转之后,就变成了1,这是就不是素数了。这一点对应pat测试点2。
6、总结
(1)先想清楚自己要干什么,再动手写代码
0 0
- pat--1015
- PAT-1015
- pat 1015
- pat 1015
- PAT 1015
- pat 1015
- PAT 1015
- PAT---1015
- PAT 1015 Reversible Primes
- PAT (Basic) 1011~1015
- PAT(A) 1015
- pat 1015 Reversible Primes
- zju pat 1015
- PAT Advanced 1015
- PAT(甲级)1015
- PAT 1015德才论
- PAT解题1015
- PAT 1015 德才论
- Android Testing Support Library
- 图解 | 一图秒懂《智能制造发展规划(2016-2020年)》
- 深度学习 7. MatConvNet 相关函数解释说明,MatConvNet 代码理解(三)cnn_mnist_experiments.m 的注释
- Ubuntu下安装Genymotion安卓模拟器
- 获取checkbox选中当前行的值
- pat 1015
- 物理与程序
- Java之多态性
- 使用ZooKeeper实现软负载均衡(原理)
- IPC
- 欢迎使用CSDN-markdown编辑器
- 基于processing的简单音频可视化
- 【深度学习:CNN】Batch Normalization解析(1)
- C#学习过程中解决的问题