一、实操题
1、要求:设计一个算法,求1~n(n为大于2的正整数)中有哪些素数,总共是多少个素数? 根据上述计算规则,补全下列代码。 函数名:getPrime(n) 参数表:n -- n为大于2的正整数。 返回值:返回素数组成的数组。 示例:当n=9时,返回:您输入的区间1-n中素数分别是:[2, 3, 5, 7],总共是4个素数!
答案解析:① math.sqrt(x) 或等效答案;(4分) ② prime > x_sqrt: 或等效答案;(3分) ③ x%prime==0: 或等效答案;(3分) ④ str(getPrime(m)) 或等效答案;(2分)
2、编写上交作业的程序,老师要求把小组7位同学(编号为1,2,3,...,6,7)的作业收齐,小组编号1的同学跟编号2的同学说“收作业了”,之后每位同学依次向后面的一位同学说要“收作业了”,直到最后,编号7的同学将自己的作业,上交到编号6的同学手中,编号6的同学将编号7的作业及自己的作业一起上交到编号5的同学,按这样的流程;直到编号1将其他同学的作业及自己的作业上交到老师中。要求编号7同学的作业放在最前面,即老师看到的作业是编号7的作业,然后是编号6的作业,最后是编号1的作业。 根据上述算法思想,编写自定义函数完成程序功能,完善空白处代码。 """ 函数名def getHomeWork(hw,n) 参数表:hw存储每位同学的作业信息,n表示第n位同学的作业 返回值:每位同学的作业,要求最后1位同学的作业显示在最前面,第1位同学作业显示在最后面 """
答案解析:①len(hw)-1 (3分) ②hw[len(hw)-1] (3分) ③getHomeWork(hw,n+1)+hw[n] (4分)
3、要求:设计一个算法,枚举排列问题。输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列,并统计全部排列总数。 根据上述算法思想,补全下列代码。 描述:输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列。 函数名:perm(n,begin,end) 参数表:n -- 整数n,begin -- 指向排列的第一个元素,end-- 指向排列的最后一个元素。 返回值:输出1-n的所有排列方式,每行一个排列,按从小到大。 示例:当输入1 2 3时,返回: [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 2, 1] [3, 1, 2] 排列总数是:6个!
答案解析:① begin>=end: 或等效答案;(2分) ② range(begin,end) 或等效答案;(2分) ③ perm(n,begin+1,end) 或等效答案;(2分) ④ perm(n,0,len(n)) 或等效答案;(2分)
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!