算法竞赛入门经典 孪生素数
来源:互联网 发布:画框图软件 编辑:程序博客网 时间:2024/06/18 16:00
如果n和n+2都是素数,则称他们是孪生素数。输入m,输出连个数均不超过m的最大孪生素数。5<=m<=10000.例如m=20时的答案是17、19,m=1000时的答案是881、883.
//孪生素数#include<stdio.h>//判断x是不是素数的函数 int is_prime(int x){ int i; for(i=2;i*i<=x;i++) if(x%i==0)return 0; return 1;}int main(){int i,m;scanf("%d",&m);for(i=m-2;i>=3;i--)if(is_prime(i) && is_prime(i+2)){printf("%d %d\n",i,i+2);break;}return 0;}
注意:对于一个功能如果需要重复利用,可以定义一个函数。
//孪生素数#include<stdio.h>#include<math.h>#include<assert.h> //判断x是不是素数的函数 int is_prime(int x){ int i,m; assert(x>=0); if(x==1) return 0; m=floor(sqrt(x)+0.5);//避免浮点误差 for(i=2;i<=m;i++) if(x%i==0)return 0; return 1;}int main(){int i,m;scanf("%d",&m);for(i=m-2;i>=3;i--)if(is_prime(i) && is_prime(i+2)){printf("%d %d\n",i,i+2);break;}return 0;}程序使用了assert.h中的assert宏来限制非法的函数调用,当x>=0不成立时,程序将异常终止。
ASSERT
语法:
#include <assert.h> void assert( int exp );功能: 宏assert()用于错误检测。如果表达式的结果为零,宏写错误信息到STDERR并退出程序执行。如果宏NDEBUG已经定义,宏assert()将被忽略。相关主题:
0 0
- 算法竞赛入门经典 孪生素数
- 算法竞赛入门经典 例题4-2孪生素数
- 算法竞赛入门经典: 第四章 函数与递归 4.3孪生素数
- 算法竞赛入门经典
- 算法竞赛入门经典
- 算法之路二:刘汝佳算法竞赛入门经典 组合数和素数判定
- 算法竞赛入门经典心得
- 《算法竞赛入门经典》勘误表
- 算法竞赛入门经典读书笔记
- #《算法竞赛入门经典》勘误
- 算法竞赛入门经典2
- 算法竞赛入门经典 exe_2
- 算法竞赛入门经典第一章
- 算法竞赛入门经典ch3_ex6WERTYU
- 《算法竞赛入门经典》笔记
- 算法竞赛入门经典 UVa1585
- 算法竞赛入门经典 UVa1586
- 算法竞赛入门经典 UVa1587Box
- UVA1428 Ping pong(树状数组)
- hrbust 1216/哈理工oj 1216 数的划分【dp】
- 笔记:Deep multi patch aggregation network for image style, aesthetics and quality estimation
- Linux应用程序地址布局
- Spark MLlib 1.6 -- 分类和回归篇
- 算法竞赛入门经典 孪生素数
- ThinkPHP框架总结之安全及使用
- 四维超体运动在三维空间的表现1(使用three.js)
- 第一博客,行走在编程道路上的菜鸟
- HDU 4614 Vases and Flowers(线段树+2分)
- [BZOJ 2180]最小直径生成树
- 排序算法(五)——简单选择排序
- 编程之路
- windows客户端开发--通过ShellExecute函数打开浏览器