<算法设计方法与优化> || 求值法

tech2022-07-07  199

求值法中的几种典型例题

**- 求最大值****-判断闰年**素数

- 求最大值

main()方法主要负责输出算法。

在这个方法中,主要使用的是算法结构中的顺序结构 如果在比较最大值和最小值的时候可以灵活运用三目运算符号:

<表达式1>?<表达式2>:<表达式3> 例子 int maxumum(int x,int y,int z) { return(x>y&&x>z)?x:((x<y&&y>z)?y:z) } ps: 先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果; 如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。嵌套使用三目运算符,快速求出 最大值或者最小值

-判断闰年

问题分析: 闰年的判断条件是: (1)能被4整除,而不能被100整除的年份; (2)能被400整除的年份 类型名称代表的含义算法leap(int year)判断year是否为闰年形式参数变量year需要判断的年份变量result用判断是否为闰年的标致量

直接上算法优化:

int leap(int year) { int result; if((year%4==0&&year%100!=0||year&&400=0) result=1; else result=0; return(result); }

👆逻辑运算从左到右,在这种多个值作判断的程序里需要善用“与”、“或”、“非”运算来提高效率和代码整洁度。


素数

问题分析: (1)素数是指在一个大于1的自然数中,除了1和它本身之外,不能被其他自然数整除的数。 直接算法优化:

#include "math.h" int isprime(int m) { int i; for(i=2;i<sqrt(m);i++; if(m%i==0) return 0; return 1; }

这个优化即除数只需要从2到给定整数的算术平方根即可。因为数不是素数一定可以由两个数相乘得到。


最新回复(0)