python2.7练习小例子(十一)
11):题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*- h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print '%-4d' % m
h += 1
if h % 10 == 0:
print ''
leap = 1
print 'The total is %d' % h
以上实例输出结果为:
101
103
107
109
113
127
131
137
139
149 151
157
163
167
173
179
181
191
193
197 199
The total is 21
使用集合解法:
#!/usr/bin/python
# -*- coding: UTF-8 -*- l = []
for i in range(101,200):
for j in range(2,i-1):
if i%j ==0:
break
else:
l.append(i) print(l) print("总数为:%d" % len(l))
#!/usr/bin/python
# -*- coding: UTF-8 -*-# from math import sqrt count=0
pn=1
for i in range(101,201):
k=int(sqrt(i))
for j in range(2,k+1):
if i%j==0:
pn=0
break
if pn==1:
count+=1
print i
pn=1
print "total number is %d"%count
Python3 测试实例:
#!/usr/bin/python3 list1 = []
list2 = []
for x in range(2, 101):
for i in range(2, x+1):
sum = x * i
if (sum < 200) & (sum > 101):
list1.append(sum)
for m in range(101, 200):
list2.append(m)
list3 = list(set(list2) ^ set(list1))
print(list1, '\n')
print(list3)
print("总数为:", len(list3))
判断素数的方式我选用了排除法,采用切片复制原有列表,逐一排除非素数,则剩余的列表中元素皆为素数:
#!/usr/bin/python
# -*- coding: UTF-8 -*- import math
m=range(101,201)
p=m[:]
for i in range(101,201):
for j in range(2,int(math.sqrt(i)+1)):
if i % j == 0:
p.remove(i)
break
print(p)
print("101至200之间的素数一共有%d个"%len(p))
#!/usr/bin/python
# -*- coding: UTF-8 -*- import math def sushu():
result = []
for i in range(101,201):
flag = True
for j in range(2,int(math.sqrt(i))+1):
if i % j == 0:
flag = False
continue
if flag == True:
result.append(i)
print result sushu()
#!/usr/bin/python
# -*- coding: UTF-8 -*- from math import sqrt l=[]
for x in range(101,201):
l.append(x)
for i in range(2,int(sqrt(x))+1):
if x%i==0:
l.pop()
break n=len(l)
print l print '总数为:',n
python3 测试实例:去除除2以外的偶数 提高效率:
#!/usr/bin/env python3 import math def sushu(start,end):
count=0
for i in range(start,end+1):
if(i%2==0 and i!=2): #去除除2以外的偶数
continue
for j in range(2,int(math.sqrt(i))+1):
if(i%j==0):
break
else:
count=count+1
print(i,end=" ")
print("")
print("count",count)
return #start=int(input("start:\n"))
#end=int(input("end:\n"))
#sushu(start,end) sushu(101,200)
# -*- coding: UTF-8 -*- def a(n):
L = []
for i in range(2,n-1):
L.append(n%i)
if 0 not in L:
return True
print filter(a,range(101,200))
Python3 测试:检查 y 能否被 2 到 y**0.5 之间的整数整除,如果能则 break,如果不能,将该数加入列表并 break:
#!/usr/bin/python3 def prim(m, n):
arr = []
for x in range(m, n + 1):
for y in range(2, int(x ** 0.5)):
if (x / y) == int(x / y):
break
else:
arr.append(x)
break
return arr print(prim(101, 200))
迭代器:
#!/usr/bin/python
# -*- coding: UTF-8 -*- def prime():
n = 2
while 1:
for i in range(2, n+1):
if n%i:
continue
else:
if i==n :
yield n
else:
break
n+=1
L = []
for i in prime():
if 101<=i<=200:
L.append(i)
if i>=200:
break
print('一共有{}个素数,这些素数分别是:{}'.format(len(L),L))
运行结果为:
一共有21个素数,这些素数分别是:[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
生成器一行搞定:
#!/usr/bin/python
# -*- coding: UTF-8 -*- L = list(filter(lambda x: x not in set([i for i in range(101,201) for j in range(2,i) if not i%j]), range(101,201)))
print('一共有{}个素数,这些素数分别是:{}'.format(len(L),L))
好啦,到这里本次分享就结束了。如果感觉不错的话,请多多点赞支持哦。。。
原文链接:https://blog.csdn.net/luyaran/article/details/80047270
python2.7练习小例子(十一)的更多相关文章
- python2.7练习小例子(二十九)
29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...
- python2.7练习小例子(十二)
12):题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数" ...
- python2.7练习小例子(八)
8):题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列. 程序源代码: #!/usr/bin/python # -*- coding: ...
- python2.7练习小例子(七)
7):题目:将一个列表的数据复制到另一个列表中. 程序分析:使用列表[:]. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...
- python2.7练习小例子(二十七)
27):题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. #!/usr/bin/python # -*- coding: UTF-8 -* ...
- python2.7练习小例子(二十八)
28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...
- python2.7练习小例子(二十四)
24):1.题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact( ...
- python2.7练习小例子(二十三)
23):题目:求1+2!+3!+...+20!的和. 程序分析:此程序只是把累加变成了累乘. #!/usr/bin/python # -*- coding: UTF-8 -*- n = ...
- python2.7练习小例子(十八)
19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. #!/usr/bin/python # -*- ...
- python2.7练习小例子(十七)
17):题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 程序分析: ...
随机推荐
- 【Hibernate那点事儿】—— Hibernate知识总结
前言: 上一篇简单的讲解了下Hibernate的基础知识.这里对Hibernate比较重要的一些知识点,进行总结和归纳. 手码不易,转载请注明!——xingoo 总结的知识点: 1 关于hiberna ...
- ZT 自定义operator new与operator delete的使用(1)
http://blog.csdn.net/waken_ma/article/details/4004972 先转两篇文章: 拨开自定义operator new与operator delete的迷雾 C ...
- 给Retext进行配置:语法高亮、数学公式、自定义样式
由于转到了Ubuntu下,本来在Windows平台下使用的一直是MarkdownPro2,而且进行了破解,十分好用.转到Ubuntu下后,MarkdownPro2不能够使用了,找了下Linux平台中的 ...
- IOS 蓝牙(GameKit、Core Bluetooth)
GameKit的蓝牙开发注意 ● 只能用于iOS设备之间的连接 ● 只能用于同一个应用程序之间的连接 ● 最好别利用蓝牙发送比较大的数据 /* 关于蓝牙的数据传输 1. 一次性传送,没有中间方法,所 ...
- Ural State University Internal Contest October'2000 Junior Session
POJ 上的一套水题,哈哈~~~,最后一题很恶心,不想写了~~~ Rope Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7 ...
- CF526D Om Nom and Necklace
嘟嘟嘟 我们可以把AB看成S,则要找的串可以写成SSSSA或者SSSSS.假设S出现了Q次,那么A出现了Q % k次,则B出现了 Q / k - Q % k次. 当ABABA是SSS的形式时,B可以为 ...
- Idea Find in Path 全局搜索的功能
当我们想查找哪些文件中含有某个关键词时,就要依靠Find in Path,相当于一个全局搜索的功能.
- Java并发程序基础
Thread.stop() 直接终止线程,并且会立即释放这个线程所持有的锁. Thread.interrupt() 并不会是线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出啦,至于目 ...
- 【题解】POJ 2115 C Looooops (Exgcd)
POJ 2115:http://poj.org/problem?id=2115 思路 设循环T次 则要满足A≡(B+CT)(mod 2k) 可得 A=B+CT+m*2k 移项得C*T+2k*m=B-A ...
- Xshell中使用FTP/SFTP工具下载文件
(1)sftp host_ip,输入用户名/密码 (2)通过cd命令找到远程服务器要拷贝的文件: 通过lcd命令指定本地保存地址. (3)通过get filename拷贝文件 (4)在本地查看,已经可 ...