linux c一站式编程 部分答案
来源:互联网 发布:人工智能美女机器人 编辑:程序博客网 时间:2024/05/19 00:39
1. 写一个表达式,分别表示整形变量x的个位和十位
x=x%10
x=x%100/10
2. 假设变量x和n是两个正整数,正常情况下,x/n这个表达式的结果是向下取整,那么如果希望向上取整应该写什么表达式呢
(x+n-1)/n
3.编写递归函数求两个正整数a和b的最大公约数(GCD,Greatest Common Divisor),使用Euclid算法:
a.如果a除以b能整除,则最大公约数是b。
b. 否则,最大公约数等于b和a%b的最大公约数。
Euclid算法的证明如下:
对任意m,n属于N,证明gcd(m,n)=gcd(n,m mod n)
先介绍一个引理:
假设 k|a, k|b,则对任意的 x,y ∈ Z, k|(xa+yb)均成立.
证明:
k|a => a=pk, k|b => b==qk (其中 p,q ∈ Z)
于是有 xa+yb=xpk+yqk=(xp+yq)k
因为 k|(xp+yq)k, 所以 k|(xa+yb)
证明:
令k=gcd(m,n),则k|m并且k|n(k|m表示m能被k整除);
令j=gcd(n, m mod n)则j|n并且j| (m mod n);
对于m,可以用n表示为m=pn+(m mod n);
由引理可知j|m(其中x=p,y=1),又j|n,于是j是m和n的公约数(但不一定是最大的);
因为k是m和n的最大公约数,所以必有k>=j;
通过另一种表示形式:(m mod n)=m-pn,同理可得:
k|(m mod n),有k|n,于是k是(m mod n)和n的公约数(也不一定是最大的);
同样由j是n和(m mod n)的最大公约数可以得到j>=k;
由常识,得出结论k=j,
即gcd(m,n)=gcd(n,m mod n).得证。
4. 用rand函数生成[10,20]之间的随机数,表达式应该怎么写?
- linux c一站式编程 部分答案
- 《linux c 编程一站式学习》课后部分习题解答
- 《linux c 编程一站式学习》课后部分习题解答
- c++primer部分练习题答案
- Linux C串口编程部分 转
- 多维数组和指针数组 Linux C编程一站式学习习题答案
- Linux C一站式学习习题答案说明
- Linux C一站式学习习题答案2.5
- Linux C一站式学习习题答案4.1
- Linux C一站式学习习题答案19.4
- python 核心编程 正则表达式部分答案
- 《编程珠玑》 个人实现部分课后答案
- 《linux c 编程一站式学习》课后部分习题解答(一)
- Linux高级文件编程 标准C部分笔记
- Linux C 一站式学习 第一部分基础知识
- Linux C一站式学习习题答案4.2.2
- Linux C一站式学习习题答案5.1.1
- Linux C一站式学习习题答案5.1.2 四舍五入
- grnCMST淘宝客管理系统_668CMS网站管理系统 后台登陆密码忘记怎么办
- 程序员都是这样区分null和undefined
- java Timer(定时调用、实现固定时间执行)
- 【Web建站】Windows10下Apache2.4配置Django
- 生产者消费者模式
- linux c一站式编程 部分答案
- springmvc的控制器,接收请求类型
- 对负数取余的操作
- 突然发现proteus闪退的一些原因!!!
- C++异常
- 数值作业:Crout克洛特分解法之C语言代码
- 归并排序详解
- LightOj 1198 田忌赛马/贪心
- 5-30 字符串的冒泡排序 (20分)