算法之每日一题:哥德巴赫猜想
2015-09-25 11:40
316 查看
#include<stdio.h> #include<math.h> //是否是素数 int is(int x){ int k=sqrt((float)x); int i; for(i=2;i<=k;i++) if(x%i==0) break; if(x==1) return 0; else if(x==2||x==3||i>k) return 1; else return 0; } //时间复杂度:O(nloglogn) //空间复杂度:O(n) //即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。 int main(){ int i,j,k,x; while(scanf("%d",&x)!=EOF,x){ if(x%2!=0) { printf("%d不是偶数\n",x); } if(is(x-2)){ printf("2 %d\n",x-2); continue; } for(i=3;i<=x/2;i+=2){ if(is(i)&&is(x-i)){ printf("%d %d\n",i,x-i); break; } } } return 0; }
相关文章推荐
- OWC 绘制3D柱状图
- git之 git checkout
- 网站渗透测试
- Android中Application、静态变量和Sharedpreferences的使用与区别
- 内核中的list
- LeetCode---Majority Element
- php end()函数与current()函数
- mysql合理配置连接池数量
- PRML第一章_易混淆概念-先验后验&生成判别&分类回归
- Cocos2d-x 使用物理引擎进行碰撞检测
- c#获取目录2
- Makefile好助手:pkgconfig
- 中国朝代
- Codeforces580D. Kefa and Dishes
- windows32位下安装Redis+连接PHP
- Android万能适配器
- Android UI学习 - Menu
- Oracle数据库导入、导出问题。
- 同时查找最大值和最小值
- 开发板学习摘要