NYOJ - 素数距离问题
2012-10-27 13:14
253 查看
素数距离问题
[align=center]时间限制:3000 ms | 内存限制:65535 KB[/align][align=center]难度:2[/align]
描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),输出每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。样例输入
3 6 8 10
样例输出
5 1 7 1 11 1
#include <stdio.h> #define MAX 1000003 char a[MAX]; // 定义数组,标志素数的结点 int main() { int n,m,i,j,s1,s2; for(i = 2; i < MAX; i++) // 采用筛选法找出MAX以内的所有的素数 { if(a[i] == 0) for(j = i + i; j <= MAX; j += i) a[j] = 1; } scanf("%d",&n); while(n--) { scanf("%d",&m); if(m == 1) // m = 1 输出素数2 距离 1 { printf("2 1\n"); continue; } for(i = m; i >= 2; i--) // 以m为起点,向前遍历找出符合要求的结点s1 if(a[i] == 0) { s1 = i; break; } for(j = m; j <= MAX; j++) // 以m为起点 想后遍历找出符合要求的节点s2 if(a[j] == 0) { s2 = j; break; } if(m-s1 <= s2 - m) // 如果,m -s1 <= s2 - m 则输出 s1 以及距离 否则,输出s2 以及距离 printf("%d %d\n",s1,m-s1); else printf("%d %d\n",s2,s2-m); } }
[/code]
相关文章推荐
- NYOJ 素数 最近距离问题
- NYOJ 24 素数距离问题
- nyoj_24 素数距离问题
- NYOJ 24 素数的距离问题
- NYOJ-24 素数距离问题
- NYOJ 24 素数距离问题
- NYOJ 24:素数距离问题
- nyoj 24 素数的距离问题
- NYOJ 24 素数距离问题
- NYOJ【24】素数距离问题【水题】
- NYOJ 24 素数距离问题
- NYOJ-素数距离问题
- NYOJ 24 素数距离问题
- NYOJ - 24 素数距离问题
- NYOJ-素数距离问题
- nyoj 素数距离问题
- NYOJ24---素数距离问题
- NYOJ--24--素数距离问题
- NYoj 24 素数距离问题
- NYOJ24-素数距离问题