学会构造素数序列

 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     }
12     int t = 0;
13     for (int i = 2; i < max; i++)
14     {
15         if (!p[i])
16             a[t++] = i;
17     }
18     for (int i = 0; i < t; i++)
19         cout << a[i] << " ";
20     return 0;
21 }
时间: 2024-12-31 03:13:33

学会构造素数序列的相关文章

UVA10006 - Carmichael Numbers(筛选构造素数表+快速幂)

UVA10006 - Carmichael Numbers(筛选构造素数表+快速幂) 题目链接 题目大意:如果有一个合数,然后它满足任意大于1小于n的整数a, 满足a^n%n = a;这样的合数叫做Carmichael Numbers.题目给你n,然你判断是不是Carmichael Numbers. 解题思路:首先用筛选法构造素数表,判断n是否是合数,然后在用快速幂求a^2-a^(n - 1)是否满足上述的式子.快速幂的时候最好用long long ,防止相乘溢出. 代码: #include <

构造 素数

Jamie has recently found undirected weighted graphs with the following properties very interesting: The graph is connected and contains exactly n vertices and m edges. All edge weights are integers and are in range [1,?109] inclusive. The length of s

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

问题: 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

用生成器实现素数序列

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 1

通过packetdrill构造的包序列理解TCP快速重传机制

TCP的逻辑是极其复杂的,其学习曲线虽然很平缓但其每一步都是异常艰难,好在这些都是体力活,只要肯花时间也就不在话下了.想彻底理解一个TCP的机制,有个四部曲:1.读与其相关的RFC:2.看Linux协议栈的TCP实现:3.通过抓包以及其它工具来确认事实就是如此:4.解决一个与之相关的网络问题.经历了以上四步骤,相信任何人都可以在相关领域内稍微装逼一把了...        本文的内容是TCP快速重传机制,但是与其它文章不同的是,本文并不剖析源码实现,也不翻译RFC,更不是原理性介绍,而是通过一个

POJ 3421 素数+组合数学

X-factor Chains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5741   Accepted: 1808 Description Given a positive integer X, an X-factor chain of length m is a sequence of integers, 1 = X0, X1, X2, …, Xm = X satisfying Xi < Xi+1 and Xi 

python埃式筛法求素数

def _odd_iter(): n = 1 while(True): n = n + 2 yield n def _not_divisable(n): return lambda x : x % n > 0 def primes(): yield 2 it = _odd_iter() while(True): n = next(it) yield n it = filter(_not_divisable(n), it) for n in primes(): if n < 1000: prin