c语言之素数距离问题
来源:互联网 发布:java中printf格式化输 编辑:程序博客网 时间:2024/05/21 05:57
素数距离问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
- 描述
- 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0- 输入
- 第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000), - 输出
- 每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。 - 样例输入
36810
- 样例输出
5 17 111 1
我的思路比较简单,先对输入元素进行判断是不是素数,如果是,直接输出,否则对将该元素分别从两边找,找到第一个比他小的是素数的元素求两个数之间的距离d1,同理找到第一个比他大的是素数的元素求两个数之间的距离d2,如果d1 <= d2,则小的即为所求,否则大的即为所有,我的机子上编译通过了,但是官网显示的出现了WA,各位大神求解?!?
代码如下:
#include<stdio.h>#include<math.h>int IsPrime(int num){int i=0;int n;//n为0,不是素数,n为1,是素数if(num == 1)n = 0;else if(num == 2)n = 1;else if(num % 2 !=0){n = 1;for(i=3;i<=sqrt(num);i++){if(num % i == 0){n = 0;break;}}}elsen = 0;return n;}int main(){int num;int n,m;int d1,d2;int count,i;scanf("%d",&count);for(i=0;i<count;i++){scanf("%d",&num);if(IsPrime(num))printf("%d\n",num);else{n = m = num;while(m>=2 && IsPrime(m)!=1)//往小的方向找m--;d1 = num - m;while(IsPrime(n)!=1)//往大的方向找n++;d2 = n - num;if(d1 <= d2)printf("%d %d\n",m,d1);elseprintf("%d %d\n",n,d2);}}return 0;}
0 0
- c语言之素数距离问题
- C语言(1)素数距离问题
- C语言 南阳理工ACM 24.素数距离问题
- c/c++素数距离问题
- 06-语言入门-06-素数距离问题
- C语言 之 素数算法
- 寻找距离某数最近的素数(C语言)
- 素数距离问题
- NYOJ - 素数距离问题
- 素数距离问题
- NYOJ24-素数距离问题
- 素数距离问题
- 素数距离问题
- 素数距离问题
- 【素数距离问题 24】
- 素数距离问题
- 素数距离问题
- 素数距离问题
- hdu1108最小公倍数(欧几里得法求最小公倍数)
- UItableView
- Poj 1061 青蛙的约会(扩展欧几里得)
- 1096. Consecutive Factors (20)
- App Store App申请审核加速
- c语言之素数距离问题
- Struts2:在Interceptor中获取action中的参数值
- 用ArrayList存储数据实现队列功能(写着玩的)
- 不忘初心
- Android-获取GPS数据方法
- 【黑马程序员】网络编程——Java复习笔记
- linux 常用命令
- Makefile下 $(wildcard $^),$^,$@,$?,$<,$(@D),$(@F)
- 10007---Java中从控制台输入数据的几种常用方法