【NYOJ】[24]素数距离问题
2016-01-19 21:52
435 查看
我还是用的素数打表
题目的数据设置
数组需要开大一些才能过
有点坑
[code]#include<stdio.h> int a[1000500]= {1,1}; int main() { for(int i=2; i<1000500; i++) { if(!a[i]) { for(int j=i+i; j<1000500; j+=i) { a[j]=1; } } } int T; scanf("%d",&T); while(T--) { int m; scanf("%d",&m); int t1=m,sum1=0; while(a[t1]) { sum1++; t1--; } int t2=m,sum2=0; while(a[t2]) { sum2++; t2++; } if(sum2<sum1) printf("%d %d\n",t2,sum2); else printf("%d %d\n",t1,sum1); } return 0; }
标程是用C++写的
C++现在还不是很懂
大概思路也是分成两部分来查找最近一个素数
也是直接用的素数的判定
[code]#include<iostream> #include<cmath> using namespace std; bool isprime(int n) { for(int k=2;k<=sqrt((double)n);k++) if((n%k)==0) return false; return true; } int main() { int n; cin>>n; while(n--) { int num,i,j; cin>>num; if(num==1) { cout<<"2 1"<<endl; continue; } for(i=num;!isprime(i);i--); for(j=num;!isprime(j);j++); if((num-i)<(j-num)) cout<<i<<' '<<(num-i)<<endl; else if((num-i)>(j-num)) cout<<j<<' '<<(j-num)<<endl; else if((num-i)==(j-num)) cout<<i<<' '<<(num-i)<<endl; } }
题目地址:【NYOJ】[24]素数距离问题
相关文章推荐
- libsvm参数设置输入方式
- HTML
- UVaLive2572 poj1418 UVa1308 Viva Confetti
- objective c,copy, mutableCopy区别
- poj2392Space Elevator【多重背包】
- 进程process
- Nginx + StartSSL 配置https服务器
- 笔记:《高效能人士的七个习惯》第八章 习惯五 知彼解己——移情沟通的原则
- hdoj2053Switch Game
- OFDM基本原理及简单实例应用
- shell命令使用HDFS的一些其他命令
- jxl导入/导出excel
- Hadoop上的中文分词与词频统计实践 (有待学习 http://www.cnblogs.com/jiejue/archive/2012/12/16/2820788.html)
- com.google.gson.JsonSyntaxException: java.text.ParseException问题解决方案
- 阿牛的EOF牛肉串
- 【BZOJ1251】序列终结者
- 栈实现符号平衡检测
- IOS UI-标签(Label)的高级应用
- Ubuntu14.04 Install GeForce GTX 750 Ti for Deep Learning
- Java子类中获取继承时传入泛型的类型