「学习笔记」3.17代码学习

今天还是继续刷acmcoder上的题,每天都会遇到很多新问题,不知道什么时候才能写得很顺畅呢。发现现在只能学白天,到晚上就很累了,一点都不想写代码了,今天晚上的时间又浪费了。看来晚上要换个学习内容了,也不能一直写代码。
2012素数判定
这道题其实是我昨天就思考的,对于素数判定用的是廖教程里的写法,后来再继续写就怎么也写不下去了,搞得乱七八糟,但是我还是想把它贴出来,这样以后自己回顾的时候也会知道自己是怎么走过来的。

encoding:utf8
##2012素数判定


##1 是3.16写的,没有写完,当然也是错的,但是我还是留下来吧,以后再看看我写这乱七八糟的代码,哈哈!
from itertools import ifilter  #此处与上不同
##廖教程中素数判断
##埃氏筛法,就是说从2开始的所有自然数,先用2把序列中的2的倍数筛掉,得到新序列(3开始的奇数序列)
##然后,再将新序列中用3把序列中3的倍数筛掉,得到新序列,以此类推,筛掉5的倍数,筛掉7的倍数……最
##后筛下来的便是我们要求的素数序列

# def _odd_iter(): #构造了一个奇数序列生成器,此处特意构造的生成器主要是因为在下面引用时需要是生成器
#     n=1
#     while True:
#         n=n+2
#         yield n  #这是个生成器,是个无限的序列
#
# def _not_divisible(n): #定义了筛选函数,将素数筛选出来
#     return lambda x:x%n>0
#
# def primes(l):    #定义生成器,不断地返回下一个素数
#     yield 2      #此生成器的第一个元素是2
#     it=_odd_iter()  #这时的it是生成器
#     while True:     #这也是一个无限循环的序列
#         n=next(it)  #生成器指向序列下一个数
#         yield n
#         it=ifilter(_not_divisible(n),it)  #筛选出来素数
#         yield it
#
# ##已经被我搞得乱七八糟的了,这都是啥啊
# def is_prime(x,y):
#     if x==0 and y==0:
#         return None
#     else:
#         s=[]
#         for n in range(x,y+1):
#             s.append(n**2+n+41)


##2
#思路:构造一个判断素数函数,题目中的多项式中n取{x:y}会生成一个list
#将生成的list里的每个数做素数判断,若全是素数,返回‘ok’,若不全是素数,返回'no',x=0y=0时结束
def func(n):
    return lambda x:x%n>0  #这是一个生成器

#在一定范围内找素数
def primes(x):
    l=(x 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值