python 第六周第一题
来源:互联网 发布:p图很萌的软件 编辑:程序博客网 时间:2024/06/06 03:35
这题刚开始能做出正确答案,但是在oj上总是提交通不过,提示:程序异常,exit code 非0;后来检查了一下,按照题目输出格式修改,并且加了异常处理模块顺利通过
题目内容:
定义一个 prime() 函数求整数 n 以内(不包括n)的所有素数(1不是素数),并返回一个按照升序排列的素数列表。使用递归来实现一个二分查找算法函数bi_search(),该函数实现检索任意一个整数在 prime() 函数生成的素数列表中位置(索引)的功能,并返回该位置的索引值,若该数不存在则返回 -1。
输入格式:
第一行为正整数 n
接下来若干行为待查找的数字,每行输入一个数字
输出格式:
每行输出相应的待查找数字的索引值
输入样例:
10
2
4
6
7
输出样例:
0
-1
-1
3
lst=[];def prime(num): for i in range(2,num): if num%i == 0: return False return Truedef bi_search(lst,m): low=0 up=len(lst)-1 while low<=up: mid=(low+up)/2 if lst[mid]<m: low= mid+1 elif lst[mid]==m: return mid else: up=mid-1 return -1n=int(raw_input());for i in range(2,n+1): if prime(i): lst.append(i)lst2=[]m=int(raw_input())lst2.append(m)while m!='': try: m=int(raw_input()) lst2.append(m) except: breakfor i in lst2: print bi_search(lst,i)
题目要求用递归二分法,但是循环也通过了,在题目给定范围的数字内素数一个列表,之后输进来检索的存入另一个,之后调用函数逐个输出结果即可
二分法用递归方法只通过了例一,应该是一些特殊数据没有考虑到,后续通过后,会贴出来,希望看到的朋友能分享一下正确的代码
lst=[];def prime(num): for i in range(2,num): if num%i == 0: return False return Truedef bi_search(lst,m,start,end): if m<0 or end==0: return -1 elif start>end: return -1 mid=int(start+(end-start)/2) if lst[mid]==m: return mid; elif m<lst[mid]: return bi_search(lst,m,start,mid-1) else: return bi_search(lst,m,mid+1,end)n=int(raw_input());for i in range(2,n+1): if prime(i): lst.append(i)lst2=[]m=int(raw_input())lst2.append(m)while m!='': try: m=int(raw_input()) lst2.append(m) except: breaklenth=len(lst) for i in lst2: print bi_search(lst,i,0,lenth)
阅读全文
0 0
- python 第六周第一题
- 第六章第一题
- 第六周第一课--队列
- 第六章数组 第一题
- c++第六章第一题
- leetcode-python 第六周
- C++第六章习题第一题
- 第六届蓝桥杯JavaA组第一题
- 第六周——第一个PHP程序
- 第六周第一项目——分数计算
- C和指针 第六章 编程练习 第一题
- 第六届南桥杯A组Java第一题 熊怪吃核桃
- c++ primer plus 第六章变成练习 第一题
- 蓝桥杯 分机号 第六届JavaB组决赛第一题
- 第六届 蓝桥杯 省赛 第一题 奖券数目
- 蓝桥杯java第六届决赛第一题--分机号
- C++ Primer Plus(第六版) 第八章 第一题
- C++Primer Plus(第六版) 第十二章 第一题
- 单例模式
- 拓扑排序
- 直线/曲线检测:Randon变换与Hough变换
- 【LeetCode】560.Subarray Sum Equals K解题报告
- HTTP协议状态码详解(HTTP Status Code)
- python 第六周第一题
- 快速幂
- Oracle 安装时提示[INS-13001] 环境不满足最低要求。
- AB1601spi传输慢的问题
- 并发(十一):为什么wait()一定要放在循环中
- mysql(六)约束
- C++面试题
- 数据库个字段类型
- Kotlin的正确使用“姿势”