素数距离问题
来源:互联网 发布:darma公司 知乎 编辑:程序博客网 时间:2024/06/12 18:46
素数距离问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
- 描述
- 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0- 输入
- 第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000), - 输出
- 每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。 - 样例输入
36810
样例输出
5 1
7 1
11 1
这个问题实际上就是判断三个数是不是素数,然后根据距离输出~
首先写个函数判断是否是素数;
然后分别写两个函数找输入数左边和右边的素数;
最后在主函数中根据输入数的不同情况进行输出:
输入1的情况,输出 2 1;
输入素数的情况,输出本身和0;
输入数距左边近,输出左边素数和距离;
输入数距右边近,输出右边素数和距离;
输入数距左右两边素数相等,输出左边素数和距离~~
#include<stdio.h>#include<math.h>int isprime(int n){ int k=(int)sqrt(n); int i; for(i=2; i<=k; i++) { if(n%i==0) return 0; } return 1;}int da(int f){ int i; for(i=f+1; i; i++) { if(isprime(i)) return i; }}int xiao(int f){ int i; for(i=f-1; i>2; i--) if(isprime(i)) return i;}int main(){ int n; scanf("%d",&n); while(n--) { long long a; scanf("%lld",&a); if(a==1) printf("2 1\n"); else { if(isprime(a)) printf("%d 0\n",a); else if((da(a)-a)>(a-xiao(a))) printf("%d %d\n",xiao(a),(a-xiao(a))); else if((da(a)-a)<(a-xiao(a))) printf("%d %d\n",da(a),(da(a)-a)); else if((da(a)-a)==(a-xiao(a))) printf("%d %d\n",xiao(a),(a-xiao(a))); } }}
0 0
- 素数距离问题
- NYOJ - 素数距离问题
- 素数距离问题
- NYOJ24-素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- 【素数距离问题 24】
- 素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- nyoj24素数距离问题
- nyoj24 素数距离问题
- NYOJ24 素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- string关系操作符
- oracle 连接远程数据库
- 面向对象的PHP(二):property_exists 和 isset
- 第十一周项目四 特殊三位数
- unix expect自动输入脚本
- 素数距离问题
- 第十一周项目-求四个数的最大公约数
- C++14
- __attribute__ ((packed)) 的作用
- jquery easyui datagrid 分页 请求两次 (1.3.6)
- 初识JAVA基础知识整理
- javaI/O之PushbackInputStream
- 数据结构------php写出几种排序算法以及二分法查找算法
- O_NONBLOCK与O_NDELAY有何不同