PythonTip(6~10)题详解
2016-12-08 18:01
253 查看
题目6:题目:求解100以内的所有素数
描述:输出100以内的所有素数,素数之间以一个空格区分分析:这个题我在以往的博客中写了好几次了,这里要注意的一点就是,最后一个空格一定要去掉,否则提交后会报错。
答案:
l=[] for i in range(2,101): fg = 0 for j in range(2,i-1): if i % j ==0: fg = 1 break if fg == 0: l.append(str(i)) print ' '.join(l) #每个素数之间用空格分开
举一反三
1.输出100以内所有的素数(格式不要求)# -*- coding: UTF-8 -*- x = range(2,101) for j in x: i = 2 #除数从 2 开始,没问题吧?嘿嘿 while i < j: if j % i == 0: break i = i + 1 if i == j: print j,
2.输出100以内所有的素数(格式不要求)
# -*- coding: UTF-8 -*- for j in range(2,101): fg = 0 for i in range(2,j-1): if j % i == 0: fg = 1 break if fg == 0: print j,
3.输出100以内所有的素数(格式不要求)
# -*- coding: UTF-8 -*- def isPrimer(x): if len([n for n in range(2, x) if (x%n == 0)]) == 0: return True for i in filter(isPrimer, range(2, 100)): print i,
题目7:求矩形面积
描述:已知矩形长a,宽b,输出其面积和周长,面积和周长以一个空格隔开分析:要知道矩形面积 s=a*b,周长 l = 2*a+2*b,这题不难吧
答案:
s = 2*a+2*b m = a*b print m,s
题目8:求中位数
描述:给你一个list L, 如 L=[0,1,2,3,4], 输出L的中位数(若结果为小数,则保留一位小数)。分析:首先知道什么是中位数,中位数是指将统计总体当中的各个值按大小顺序排列起来,形成一个数列,如果值的个数是单数,则处于数列中间位置的值就称为中位数,如果值的个数是双数,则处于数列中间位置的两个值的平均值就称为中位数.
答案:
L.sort() if len(L)%2!=0: print L[len(L)/2] else: print (L[len(L)/2-1]+L[len(L)/2])/2.0
题目9:最大公约数
描述:给你两个正整数a和b, 输出它们的最大公约数。分析:求最大公约数,就是要分别找到这两个数的约数,再进行比较。
答案:
l1=[] l2=[] if a == 1 or b == 1: #考虑 a 和 b 都是 1 的情况 print 1 else: #考虑 a 和 b 互为倍数的情况 if a%b == 0: print b elif b%a == 0: print a else: #除以上两种情况外的第三种情况 for i in range(1,a+1): #找出 a 的约数 if a%i == 0: l1.append(i) for j in range(1,b+1): #找出 b 的约数 if b % j == 0: l2.append(j) print max(set(l1) & set(l2)) #利用集合的性质将公约数找出
举一反三
1.# -*- coding: UTF-8 -*- a = 14 b = 28 maxno = max(a,b) for i in range(1,maxno): if (a % i == 0) & (b % i == 0): thisnumber = i print thisnumber
2.辗转相除法
# -*- coding: UTF-8 -*- a = 14 b = 28 if a>b: a,b = b,a while b % a != 0: a,b = b % a, a print a
3.一行代码解决问题(不太提倡,不易锻炼逻辑思维)
# -*- coding: UTF-8 -*- a = 1 b = 28 print(max([x for x in range(1,a) if a%x==0 and b%x==0]))
题目10:最小公倍数
描述:给你两个正整数a和b, 输出它们的最小公倍数分析:公约数都会求了,公倍数就很容易了
答案:
l1=[] l2=[] if a == 1: print b elif b == 1: print a else: if a%b == 0: print a elif b%a == 0: print b else: for i in range(1,a+1): if a%i == 0: l1.append(i) for j in range(1,b+1): if b % j == 0: l2.append(j) print (a*b)/(max(set(l1) & set(l2)))
举一反三
1.# -*- coding: UTF-8 -*- a = 15 b = 28 sum = a*b if b>a: a,b=b,a while a%b!=0: b,a = a%b,b print sum/b
2.
# -*- coding: UTF-8 -*- a = 15 b = 28 def gcd(a, b): if a < b: a, b = b, a r = a % b while r != 0: a = b b = r r = a % b return b print(a * b / gcd(a, b))
相关文章推荐
- 【刷题 Python Tip】题目6~10
- PythonTip(11~15)题详解
- lambda表达式使用方法详解 分类: python 2013-03-15 10:58 396人阅读 评论(0) 收藏
- PythonTip(16~20)题详解
- PythonTip(36~40)题详解
- Python Tip(31~35)题详解
- python标准库介绍——10 sys 模块详解
- PythonTip(1~5)题详解
- PythonTip(26~30)题详解
- Python Tip(46~50)题详解
- PythonTip(21~25)题详解
- Python Tip(51~55)题详解
- pythontip 挑战python (6-10)
- 10 python yield用法详解
- Python Tip(41~45)题详解
- 稳扎稳打Silverlight(10) - 2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性
- python中的新型类及其实例详解
- Oracle语句优化53个规则详解(10)
- (已加马赛克)10 行代码判定色*情*图片——Python 也可以系列之二
- 稳扎稳打Silverlight(10) - 2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性