素数距离问题
来源:互联网 发布:java正则表达式教程 编辑:程序博客网 时间:2024/06/07 05:59
素数距离问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
- 描述
- 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0- 输入
- 第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000), - 输出
- 每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。 - 样例输入
36810
- 样例输出
5 17 1
11 1
基础知识不扎实啊,这么简单的问题用了一个小时才AC!!!
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#define MAXSIZE 1000100using namespace std;int fun(int x){int i,n,flag=0;if(x==1||x==0) return 0;else{n=sqrt(x); for(i=2;i<=n;i++) { if(x%i==0){return 0;} } return 1;//是素数} } int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);int i,j;if(fun(n)==1){printf("%d ",n);printf("0\n");}else{int z=-1,zd=-1,y=-1,yd=-1;for(i=n-1;i>=0;i--){if(fun(i)){z=i;zd=n-i;break;}else continue;}for(j=n+1;j<MAXSIZE;j++){if(fun(j)){y=j;yd=j-n;break;}else continue;} if(z>0&&y<0) printf("%d %d\n",z,zd); else if(y>0&&z<0) printf("%d %d\n",y,yd); else { if(zd<=yd) printf("%d %d\n",z,zd); else printf("%d %d\n",y,yd); }}} return 0;}
0 0
- 素数距离问题
- NYOJ - 素数距离问题
- 素数距离问题
- NYOJ24-素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- 【素数距离问题 24】
- 素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- nyoj24素数距离问题
- nyoj24 素数距离问题
- NYOJ24 素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- c++学习
- Unity shader 官网文档全方位学习一
- 输入子系统
- 分布式进阶(十七)分布式设计介绍
- Android应用程序资源——Animation动画资源
- 素数距离问题
- 身份证号要是能修改就好了,不怕被骗子骗了
- linux 安装 youcompleteme
- Java设计模式之责任链模式
- 时间格式对cronjob的影响。
- 校园网&openwrt记(九)防火墙
- Android 解析json数据
- iOS-添加新手操作指引
- 获取已经选择的select框的option并回显