目录
-----------------------正文---------------
1)简介
质数,即除1和它本身外没有其他因数的数,又称素数。
合数,即除1和它本身外有其他因数的数。
---注意:1既不是质数有不是合数!
2)程序实现代码-1- for循环
打包一个函数:
def primenum(start,end):
start为起始,end为结束
函数主体
def primenum(start,end):
prime=[]
for i in range(start,end+1):
for j in range(2,i):#不包含1,它本身
if i%j==0:
break
else:#注意else加在for后面
prime.append(i)
return prime
输出效果还行,但是有0和1...
添加过滤效果
def primenum(start,end):
prime=[]
if start<2:start=2
for i in range(start,end+1):
for j in range(2,i):#不包含1,它本身
if i%j==0:
break
else:#注意else加在for后面
prime.append(i)
return prime
print(primenum(0,100))
结果:
[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]
合数就好办了,把所有除0,1以外的数算算就好
def hs(start,end):
num=[]
if start<2:start=2
for i in range(start,end+1):
for j in range(2,i):
if i%j==0:
num.append(i)
break
return num
------------------------------------------初学者分割线---------------------------------------------------------------
高端玩法来了!||ヽ(* ̄▽ ̄*)ノミ|Ю闪亮登场
3)程序实现代码[2] 列表表达式
列表表达式:
越重要,越前置。
a=[i for i in range(1,10)]
print(a)
>>>[1,2,3,4,5,6,7,8,9]
[使用for循环把每一次i的值套入]
a=[i for i in range(1,10) if i%2==0]
print(a)
>>>[2,4,6,8]
升-级-了!
if放在了for后面,表示每一次i出现还要过if审查才予以复制,否则不算数
a=[i**2 for i in range(1,5)]
print(a)
>>>[1,4,9,16]
将i做了更多操作
a=[j for j in range(i) for i in range(10)]
print(a)
报错,首先的循环前置
a=[j for i in range(10) for j in range(i)]
print(a)
>>>[0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8]
嵌套循环
-----------------------正文---------------
合数求法:
list
a=[]
加入表达式一号(本处使用3~100)
a=[i for i in range(3,100+1)]
进行嵌套,求因数
a=[j for i in range(3,100+1) for j in range(2,i)]
判断是否整除
a=[j for i in range(3,100+1) for j in range(2,i) if i%j==0]
注意:i才是真正的值!
a=[i for i in range(3,100+1) for j in range(2,i) if i%j==0]
接下来要滤除重复值:
a=list(set([i for i in range(3,100+1) for j in range(2,i) if i%j==0]))
好了OK
接下来是质数——但是判断就简单多了,我直接上代码
value = [i for i in range(1 if 1 >= 2 else 2, 100 + 1) if i not in a]
有人想要一行求质数而非一行求合数,一行求质数:
one=[i for i in range(1 if 1 >= 2 else 2, 100 + 1) if i not in [i for i in range(1,100+1) for j in range(2, i) if i % j == 0]]
----------------完-----------------