Akihisa
发表于 2018-9-3 20:36:25
prime =[]
num = list(range(2,201))
while num:
prime.append(num)
num = list(filter( lambda i:i % num ,num))
print(prime)
silent1314
发表于 2018-9-3 22:06:37
num_list = []
for i in range(1, 201):
if i == 1:
continue
else:
num_list.append(i)
answer = []
n = 0
while n < len(num_list):
for each_num in num_list:
if each_num % num_list == 0:
if each_num == num_list:
continue
else:
num_list.remove(each_num)
n += 1
print(num_list)
jiaozhu80
发表于 2018-9-3 22:14:30
def prime_num(n):
result=[]
list1=list(range(2,n+1))
while list1:
i=0
m=len(list1)
prime=list1#列表list1中的第一个元素一定是素数
result.append(list1)
while i<m:
if list1%prime==0:
list1.remove(list1)
else:
i+=1
m=len(list1)
return result
grf1973
发表于 2018-9-4 09:10:41
def getprimearray(n):
m=int((n-1)/2)
a=
lmt=int((n**0.5)/2)
for i in range(1,lmt+1):
if a==0:
for j in range(i*3+1,m+1,i*2+1):
a=1
b===0]
b.insert(0,2)
return b
n=200
print(getprimearray(n))
胡尔汉
发表于 2018-9-4 09:20:59
list1 = list(range(2,201))
for i in list1:
max = 200 // i
j = 2
while j <=max:
if i*j in list1:
list1.remove(i*j)
j += 1
print(list1)
FC的注册很坑
发表于 2018-9-4 10:21:52
def func205(n):
list=
list.remove(1)
while len(list)!=1:
print(list,end=" ")
a=list
for i in range(1,(n+1)//a+1):
try:
list.remove(a*i)
except ValueError:
pass
print(list)
func205(200)
结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
ccqzhm
发表于 2018-9-4 11:33:20
n = 200
n2 = n // 2
result = []
lists = list(range(2,n))
while True:
i = lists
if i > n2:
break
result.append(i)
lists = list(filter(lambda n : n % i != 0, lists))
result += lists
print(result)
assert result==
print('ok')
shoes06
发表于 2018-9-4 14:19:57
lst = list(range(2,200))
tar = []
while True:
t = lst.pop(0)
tar.append(t)
for n in range(2,200):
if t*n < 200 and t*n in lst:
lst.remove(t*n)
if lst == []:
break
tar
Wangzy1025
发表于 2018-9-5 16:12:51
def fun205(n):
list1, result = list(range(2, n+1)), []
while list1:
result.append(list1)
for each in list1:
if not each % result[-1]:
list1.remove(each)
return result
print(fun205(200))
CoderWGB
发表于 2018-9-5 22:36:19
import math
def is_prime(num):
if num <= 1:
return False
elif num == 2:
returnTrue
for index inrange(2,num):
if divmod(num,index) == 0:
return False
else:
returnTrue
numlist = []
num = 200
while num > 1:
if is_prime(num):
numlist.append(num)
num -= 1
print()
CoderWGB
发表于 2018-9-5 23:41:25
import math
def isPrime(n):
for i in range(2, int(math.sqrt(n))):
if n % i == 0:
return False
else:
return True
numlist = []
for i in range(0,200):
if i >= 2 and isPrime(i) :
numlist.append(i)
print(numlist)
Henriz
发表于 2018-9-6 08:14:17
list_a = []
for i in range(1,201,1):
list_a.append(i)
list_a.remove(1)
list_b = list_a
for j in list_a:
for k in range(2,200//j+2):
if j*k in list_b:
list_b.remove(j*k)
print(list_b)
阿池
发表于 2018-9-7 17:29:02
list1=
list2=[]
if 1 in list1:
list1.remove(1)
if 0 in list1:
list1.remove(0)
while list1:
list2.append(list1.pop(0))
list1 = list(filter(lambda x:x%list2[-1], list1))
print(list2)
yanchang135
发表于 2018-9-8 14:40:04
本帖最后由 yanchang135 于 2018-9-8 15:42 编辑
l=
for i in range(3,200):
flag=True
for j in l:
if i % j == 0:
flag = False
break
if flag:
l.append(i)
print(l)
print(len(l))
谁与争锋
发表于 2018-9-11 06:44:03
list2=[]
list3 = list(range(1,201))
list3.sort()
list3.remove(1)
#print(list3)
while len(list3)>0:
y=list3.pop(0)
list2.append(y)
for x in list3:
if x%y==0:
list3.remove(x)
print(list2)
graceasyi
发表于 2018-9-11 15:35:33
下面是自己写的代码,效率好低,来学习大神的代码。
import time
rg = 2000
tt = time.time()
nums =
m = 0
while m < len(nums):
for k in range(2, int(nums[-1]/nums)+1):
if (nums * k) in nums:
nums.remove(nums * k)
m += 1
print(nums)
print(time.time() - tt)
喜欢吃菠菜
发表于 2018-10-16 21:05:29
本帖最后由 喜欢吃菠菜 于 2018-10-16 21:07 编辑
递归求法:
def primeNum(numlist):
if not numlist:
return numlist
return ]+primeNum( if x%numlist])
print(primeNum(range(2,100)))
结果:
不知道对不对,请大家指教
喜欢吃菠菜
发表于 2018-10-16 22:02:04
凌九霄 发表于 2018-9-2 11:04
本代码中,最耗时的是sorted排序,占整个运行时间的54%左右。
不应该去sorted,太浪费时间,而且很不pythonic.
这样的题目我建议用递归,代码简单清晰。
def primeNum(numlist):
if not numlist:
return numlist
return ]+primeNum( if x%numlist])
凌九霄
发表于 2018-10-17 09:38:56
本帖最后由 凌九霄 于 2018-10-17 09:47 编辑
喜欢吃菠菜 发表于 2018-10-16 22:02
不应该去sorted,太浪费时间,而且很不pythonic.
这样的题目我建议用递归,代码简单清晰。
def primeNum ...
首先这个方式确实简洁,效率大概是我那个的2倍多点。我相信,随着范围的增大,速度的优势也会更大。缺点是如果数的范围比较大,比如100000,递归会挂掉,重新设置了足够的允许递归层数也不行。测试了下,我的I7、8G内存,递归30000就不行了,也许内存不够。如果说我那个太浪费时间的话,递归则是太浪费空间了。有没有既快又省的方法呢?
喜欢吃菠菜
发表于 2018-10-17 09:51:09
凌九霄 发表于 2018-10-17 09:38
首先这个方式确实简洁,效率大概是我那个的2倍多点。我相信,随着范围的增大,速度的优势也会更大。缺 ...
是的。python语言本来就是要牺牲效率而使代码优雅简洁。如果要解决大的数据肯定用python很不科学,这个必须承认。我这个只是匆忙中写的,没有优化。希望只是和大家交流一下。多指教了