整體思路是通過素數(shù)的定義:在大于1的整數(shù)中只能被1和它本身整除的數(shù)。
那我們便可以用一個循環(huán),遍歷其中每個數(shù)曲楚,假設(shè)有數(shù)a,讓他們都與另一個循環(huán)中的每個數(shù)(最大到a-1)相除诀诊,這時洞渤,如果余數(shù)都不等于0,那么這個數(shù)便是我們要的素數(shù)了属瓣。
有了這么一個思路载迄,就可以設(shè)計我們要的算法了。
使用普通循環(huán)遍歷
l = []
for i in range(2, 101): #定義需要循環(huán)的范圍
for j in range(2, i):
if i % j == 0:
break #如果余數(shù)等于0抡蛙,則說明不是素數(shù)护昧,跳出整個循環(huán)
else:
l.append(i) #把得到的素數(shù)放在list中
print(l)
print(sum(l))
這里用到 for else 循環(huán),除非循環(huán)非正常退出粗截,否則執(zhí)行else
使用filter惋耙,lambda
import math
def getPrime():
return list(filter(lambda x: not [x % i for i in range(2, int(math.sqrt(x)) + 1) if x % i == 0], range(2, 101)))
#filter(function, sequence):對sequence中的item依次執(zhí)行function(item),將執(zhí)行結(jié)果為True的item組成一個List/String/Tuple(取決于sequence的類型)返回
print(getPrime())
print(sum(getPrime()))
這里如果返回filter需要用list()。
Construct an iterator from those elements of iterable for which function returns true.
使用函數(shù)
def num(n):
for i in range(2, n):
if n % i == 0:
break
else:
return n
results = map(num, range(2, 101))
l=[i for i in results if i]
print(l)
print(sum(l))