NYOJ 24 素数距离问题
来源:互联网 发布:手机真假检测软件 编辑:程序博客网 时间:2024/06/05 19:37
NYOJ 24 素数距离问题
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0输入第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),输出每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
36810
样例输出
5 17 111 1
素数真是个永恒的话题。。这道题数据量很大。
求素数有很多种办法,这里用的是 爱拉托逊斯筛选法。 打了一个素数表,a[i]表示i是不是素数。 当然也可以用bool型的数组。
#include <stdio.h>#include <math.h>#define N 1000005int a[1000010];int main(){ void isprime(void); int n; scanf("%d",&n); int m; int i,j,s; int t; isprime(); while(n--) { scanf("%d",&m); s=9999999; for (i=m;i>1;i--) //向前 if(a[i]) { t=i; s=m-i; //距离 break; } for(i=m;;i++) //向后 if(a[i]) { if(s>i-m) { s=i-m; t=i; } break; } printf("%d %d\n",t,s); } return 0;}void isprime(void) //爱拉托逊斯筛选法{ int i,j; for (i=3;i<N;i+=2) a[i]=1; a[2]=1; for(i=2;i<N;i++) if(a[i]) { for(j=2;j*i<N;j++) a[i*j]=0; }}
0 0
- NYOJ 24 素数距离问题
- NYOJ 24-素数距离问题
- NYOJ 24 素数距离问题
- NYOJ-24-素数距离问题
- NYOJ 24 素数距离问题
- nyoj 24 素数距离问题
- Nyoj 24 素数距离问题
- nyoj 24 素数距离问题
- nyoj 24 素数距离问题
- NYOJ 24 素数距离问题
- nyoj-24-素数距离问题
- NYOJ 24 素数距离问题
- NYOJ 24 素数距离问题
- NYOJ 24 素数距离问题
- NYOJ 24 素数距离问题
- NYOJ--24素数距离问题
- nyoj 24 素数距离问题
- NYOJ 24 素数距离问题
- java socket编程
- C++运算符重载函数基础及其值返回状态
- LCD driver与触控IC
- Cocos2dx 3.0 过渡篇(二) 事件回调
- 链栈
- NYOJ 24 素数距离问题
- [web服务器]APACHE日志child pid XXXXXX exit signal Segmentation fault (11)解决
- 23种设计模式(2):工厂方法模式
- 劳动节
- Http获取Json数据,并用Gson解析
- Cocos2dx 3.0 过渡篇(三) 触摸机制
- nil/Nil/NULL/NSNull
- 爱车
- JavaSE基础第二部分:Java基础语法之流程控制语句