用生成器实现素数序列

 1 def geneList():
 2     n = 1
 3     while True:
 4         n += 2
 5         yield n
 6
 7 def myFilter(n):
 8     return lambda x : x % n > 0
 9
10 def primeFilter():
11     yield 2
12     mGen = geneList()
13     while True:
14         n = next(mGen)
15         yield n
16         mGen = filter(myFilter(n), mGen)
17
18
19 for x in primeFilter():
20     if x <1000:
21         print(x)
22     else:
23         break
时间: 2024-10-29 19:06:29

用生成器实现素数序列的相关文章

学会构造素数序列

1 #include<iostream> 2 using namespace std; 3 #define max 100 //这里默认构造100以内的素数 4 int p[max], a[max]; 5 int main() 6 { 7 for (int i = 2; i*i < max; i++) 8 { 9 for (int j = i; j*i < max; j++) //i,j相乘得到的肯定不是素数 10 p[i*j] = 1; //数组p用来标记不是素数的元素 11 }

素数序列的生成及其应用(采用了自研的高效算法)

问题: 2000以内的素数有哪些? 她的手机号是素数吗? 思路: 问题归类: 怎样获取n以内的所有素数呢? 怎样高效地判定一个正整数是否为素数呢? 假设已知: 第一个素数是2,第二个素数是3: 断定某正整数n确实为素数的依据是:当且仅当 若不超过n的算数平方根的所有素数都不能整除n,那么就断定n为素数. 酝酿策略: 先解决"获取n以内的所有素数"的问题,然后应用其结果来解决"高效地判定一个正整数是否为素数"的问题. 从第三个待定素数开始,以后总是把下一个候选素数的初

素数序列的生成及其应用 Advanced Version 1

算法依据: 若某大于1的整数N的算术平方根以内的所有素数都不能整除N,那么N是素数. 数据容器: 小型数组BUFFER.二进制文件CACHE 程序特性: 理论上使用极少的内存(0.5MB左右)就能获取unsigned long long能表示的最大值以内的全部素数(实际能获取的素数个数会受到硬盘容量的制约) 点击下载源代码 原文地址:https://www.cnblogs.com/yawenunion/p/8978048.html

生成素数序列----埃拉托斯特尼筛法

下面是埃拉托斯特尼筛法的实现代码: boolean[] sieveOfEratosthenes(int max) { boolean[] flags = new boolean[max + 1]; int count = 0; init(flags);//将flags中0,1元素除外的所有元素设为true int prime = 2; while (prime <= max) { //划掉余下为prime倍数的数字 crossOff(flags, prime); //找出下一个为true的值 p

Python 利用filter函数求素数

首先从2开始自然数序列 2,3,4,5,6,7,8,9,10,11,12,13,14-- 剔除2和2 的倍数,奇数列 3,5,7,9,11,13,15,17,19-- 剔除3的倍数 5,7,11,13,17,19 剔除5的倍数,以此类推 #创建一个奇数序列 def jishu(): n=1 while True: n=n+2 yield n #迭代器Iterator,惰性序列 #创建一个过滤函数 def guolv(first): return lambda x:x % first>0 #定义一

素数检测杂谈

最开始我们学到的是这种朴素的写法: (define (prime? n) (cond [(or (= n 2) (= n 3)) #t] [(even? n) #f] [else (prime-test-loop n)])) (define (prime-test-loop n) (let ((top (ceiling (sqrt n)))) (let iter ((start 3)) (cond [(> start top) #t] [(= (mod n start) 0) #f] [else

POJ2689_Prime Distance【素数】【两次筛法】

Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12644 Accepted: 3369 Description The branch of mathematics called number theory is about properties of numbers. One of the areas that has captured the interest of number theore

POJ2739_Sum of Consecutive Prime Numbers【筛法求素数】【枚举】

Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19350 Accepted: 10619 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representations d

POJ1595_Prime Cuts【素数】【水题】

Prime Cuts Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10464 Accepted: 3994 Description A prime number is a counting number (1, 2, 3, ...) that is evenly divisible only by 1 and itself. In this problem you are to write a program that w