今天我们来谈一谈素数的判定. 对于每一个OIer来说,在漫长的练习过程中,素数不可能不在我们的眼中出现,那么判定素数也是每一个OIer应该掌握的操作,那么我们今天来分享几种从暴力到高效的判定方法. 1.直观判断法 因为这种方法其实就是我们平常所说的暴力法.根据素数的定义,不能被2~n-1之内的数整除的整数n就被称为素数.所以我们从2跑到n-1,每次取模判断即可,这是最直观的一种方法,代码如下: bool isPrime_1(int num) { int tmp=num-1; for(int i=…
关于素数的基本介绍请参考百度百科here和维基百科here的介绍 首先介绍几条关于素数的基本定理: 定理1:如果n不是素数,则n至少有一个( 1, sqrt(n) ]范围内的的因子 定理2:如果n不是素数,则n至少有一个(1, sqrt(n) ]范围内的素数因子 定理3:定义f(n)为不大于n的素数的个数,则 f(n) 近似等于 n/ln(n) (ln为自然对数) ,具体请参考here 求不超过n的素数                         本文地址 算法1:埃拉托斯特尼筛法,该算法的…
素数(Prime)及判定 定义 素数又称质数,一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数,否则称为合数. 1既不是素数也不是合数. 判定 如何判定一个数是否是素数呢?显然,我们可以枚举这个数的因数,如果存在除了它本身和1以外的因数,那么这个数就是素数. 在枚举时,有一个很简单的优化:一个合数\(n\)必有一个小于等于\(\sqrt{n}\)的因数. 证明如下: 假设一个合数\(n\)没有小于等于\(\sqrt{n}\)的因数. 由于\(n\)为合数,所以除了\(n\)与…
Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数. Input 输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理. Output 对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出"Sorry",每组输出占一行. Sample Input 0 1 0 0…
Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19895   Accepted: 10906 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representatio…
这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环. 这题肯定得打表,筛素数肯定用埃托色尼筛法(不好意思把大名鼎鼎的埃拉托色尼名字打错了,表打我). 再看当你所找的回文数的位数为偶数时,有如下定理除11外所有偶数位数的回文数都能被11整除,所以所有偶数位数的回文都不是素数. 证明看如下(我手写的) 手机像素渣(凑活着吧)字丑也凑和着. 证完后我们在来说题目给的数据范围 所以当…
1706 求合数和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果     题目描述 Description 用户输入一个数,然后输出从1开始一直到这个数为止(包括这个数)中所有的合数的和. 输入描述 Input Description 一个整数N,0<N<=1000 输出描述 Output Description 一行,一个整数,即从1到N中所有合数的和 样例输入 Sample Input 样例一:100 样例二:9 样例输出…
1436 孪生素数 2  时间限制: 2 s  空间限制: 1000 KB  题目等级 : 白银 Silver 题解  查看运行结果     题目描述 Description 如m=100,n=6 则将输出100以内的所有相差6的孪生素数:如, 5 11 7 13 .... 83 89 请按此规律输出数与数之间用半角空格区分,每一对一行. 输入描述 Input Description 第一行输入一个整数数m为一个范围(如100) 第二行输入一个整数k为目标孪生素数的公差(如6) 输出描述 Out…
今天我们来谈一谈素数的判定/筛法. 对于每一个OIer来说,在漫长的练习过程中,素数不可能不在我们的眼中出现,那么判定/筛素数也是每一个OIer应该掌握的操作,那么我们今天来分享几种从暴力到高效的判定法/筛法. 弱智的譬如从1枚举到n或者是枚举的\(\sqrt{n}\)的算法就不讲了. 1.欧拉筛 欧拉筛是最基本的一种线性筛法,预处理完成之后可以O(1)查询,适合于查询次数多,范围不大的情况. 基本思想:每个合数只让其最大因数(或最小质因数)标记. 为了保证这一点,我们开一个prime数组,把检…
[BZOJ1053][HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6等都是反质数.现在给定一个数N,你能求出不超过N的最大的反质数么? Input 一个数N(1<=N<=2,000,000,000). Output 不超过N的最大的反质数. Sample Input 1000 Sample Outp…
任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种非常古老但是非常有效的求解\(p_n\)的方法,其原理非常简单:从2开始,将每个素数的各个倍数都标记成合数. 其原理如下图所示: 图引自维基百科 埃拉托斯特尼筛法相比于传统试除法最大的优势在于:筛法是将素数的各个倍数标记成合数,而非判定每个素数是否是素…
任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种非常古老但是非常有效的求解\(p_n\)的方法,其原理非常简单:从2开始,将每个素数的各个倍数都标记成合数. 其原理如下图所示: 图引自维基百科 埃拉托斯特尼筛法相比于传统试除法最大的优势在于:筛法是将素数的各个倍数标记成合数,而非判定每个素数是否是素…
大家都知道RSA的加密的安全性就是能够找到一个合适的大素数,而现在判断大素数的办法有许多,比如Fermat素性测试或者Miller-Rabin素性测试,而这里我用了Miller-Rabin素性测试的算法,具体的理论我写到下面. 算法的理论基础: Fermat定理:若n是奇素数,a是任意正整数(1≤ a≤ n−1),则 a^(n-1) ≡ 1 mod n. 2.  如果n是一个奇素数,将n−1表示成2^s*r的形式,r是奇数,a与n是互素的任何随机整数,那么a^r ≡ 1 mod n或者对某个j…
题目描述 题目背景 题目名称是吸引你点进来的[你怎么知道的] 实际上该题还是很水的[有种不祥的预感..] 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m接下来n行,每行两个整数 l,r 表示区间. 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line 输入输出样例 输入样例: 2 5 1 3 2 6 输出样例: 2 Crossing the line 说明 数据范围和约定 对于20%的数据 1<=n<=10 1&…
Max Factor Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description To improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000) cows with a distinct serial number in the ran…
出于无聊, 打算从头实现一遍RSA算法 第一步, 大素数生成 Java的BigInteger里, 有个现成的方法 public static BigInteger probablePrime(int bitLength, Random rnd) { bitLength是期望生成的素数的二进制位数, rnd是随机数发生器 函数注释表明, 这个方法的返回值为合数的概率为2^-100 生成100个1024位的素数, 耗时13471ms 但是显然我不打算直接使用这个函数, 要做就从最底层做起! 目前的做…
思路: 预处理一下素数数组,然后暴力计算就好了. 类似处理素数因子: #include <cstdio> #include <iostream> #include <string.h> #include <algorithm> using namespace std; typedef long long LL; const long long INF=0x3f3f3f3f; const int N=1e2+10; int prime[N],ans[N]; b…
http://codeforces.com/problemset/problem/755/A 题意:给出一个n,让你找一个m使得n*m+1不是素数. 思路:暴力枚举m判断即可. #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #include <string> #include <iostr…
题目 Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1^k1 * p2^k2 -pm^km. Input Specification: Each input file contains one test case which gives a positive integer N in the range of lo…
pat链接:http://pat.zju.edu.cn 1 #include<stdio.h> 2 int main(){ 3 int a,b; 4 int c; 5 while(scanf("%d %d",&a,&b)!=EOF){ 6 c=a+b; 7 if(c<0){ 8 c=-c; 9 printf("-"); 10 } 11 if(c>=1000000) 12 printf("%d,%03d,%03d\n&…
Miller-Rabin质数测试 本文主要讨论使用Miller-Rabin算法编写素数的判定算法,题目来源于hihocoder. 题目 题目要求 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 使用Miller-Rabin算法进行质数素数测试,要求输入一个数字,对其是否是素数进行判定,并打印出相对应的结果. 提示:Miller-Rabin质数测试 输入 第1行:1个正整数t,表示数字的个数,10≤t≤50 第2..t+1行:每行1个正整数,第i+1行表示正整数a[i…
转载来自朱全民名师工作室 信息学奥赛辅导经验谈 全国青少年信息学奥林匹克分区竞赛(简称NOI)是经中国科协.国家教育部批准,由中国计算机学会主办的一项全国性的青少年学科竞赛活动.随着信息学奥林匹克竞赛的深入开展,越来越多的教师和学校都已投入此项教学的研究之中.我从事这项工作已有六年时间.现就我在中学信息学奥林匹克竞赛教学中的做法与各位同行进行交流.   •培养学生的自信心 自信是一种正确.积极的自我观念和自我评价.积极意味着一种对自己的认同.肯定和支持的态度.而在现今的学生当中,普遍存在着自我评…
算数基本定理: 1.整数及其相关 2.唯一分解定理 对于任意的大于1的正整数N,N一定能够分解成有限个质数的乘积,即 其中P1<P2<...<Pk,a1,a2,...,ak>=1; 证: 存在性: 若存在最小的N不满足条件,当N为质数是,显然不成立:当N为合数时,存在P,使得N=P*(N/P),N/P<N,与假设N为最小的矛盾,故一定存在: 即:假设N为最小的 当N为质数直接gg 当N为合数还是gg 故不存在... 唯一性: 假设N的分解不唯一 设存在最小的N,使得N=p1r…
浏览全部代码:请戳 本文谨代表个人思路,欢迎讨论;) 1051. Pop Sequence (25) 题意 给定 stack 的容量,给定数据的入栈顺序:从 1 开始的正整数序列,在允许随机的出栈操作的情况下,要求判断某出栈序列是否可能. 比如,告知 stack 容量为 5,入栈序列的最大值为 7.有两个序列需要判断合理性: {1 2 3 4 5 6 7}: 这个序列是可能的,只需每次入栈时都做出栈操作. {3 2 1 7 5 6 4}: 这个序列是不可能的,其中前半部分 3 2 1 是合法的,…
1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几何 19 1.10 凸包 26 1.11 网格 28 1.12 圆 28 1.13 整数函数 30 2. 组合 33 2.1 组合公式 33 2.2 排列组合生成 33 2.3 生成gray码 35 2.4 置换(polya) 35 2.5 字典序全排列 36 2.6 字典序组合 36 3. 结构…
为了方便打印,不再将代码放到代码编辑器里,祝你好运. ACM-ICPC竞赛模板(1) 1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几何 19 1.10 凸包 26 1.11 网格 28 1.12 圆 28 1.13 整数函数 30 2. 组合 33 2.1 组合公式 33 2.2 排列组合生成 33 2.3 生成gray码 35 2.4 置换(…
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2627 题意:计算下面式子 思路: A先不管.我们来搞B部分.下面说如何计算B这个最后那部分 伯努利函数: 所以 带入到B中 那个f(k)中k一旦确定x,y,k就是常数,所以就是关于n的函数. 因为d^x以及莫比乌斯函数都是积性函数,而g是他们的狄利克雷卷积,所以g也是积性函数.所以依次计算每个n的质因子即可. 这样我们计算每个质因数即可.现在我们计算g(ps) 我们发现 所以 这…
vijosP1359 Superprime 链接:https://vijos.org/p/1359 [思路] 搜索+数学. 很明显的搜索,依次确定每一个数,用参数sum记录dfs即可. 本题的关键在于如何快速判断大素数. 这里素数的判定用到了一个O(sqrt(n))的筛选+试除法,如下: 1.  构造sqrt(n)以内的素数表与素数筛. 2.  对于询问n如果位于sqrt(n)之内则直接查素数筛. 3.  否则,用素数表中的数依次试除. [代码] #include<iostream> #inc…
今天晚上的火车回家啦.所以提前更出来~.愉快的收拾我的包裹~滚回家吃半个月~胖几斤又要回学校啦~ T T这个假期虽然很忙.但是我觉得很有意义.很有价值~爱你们~ 描述 验证“歌德巴赫猜想”,即:任意一个大于等于6的偶数均可表示成两个素数之和. 输入 输入只有一个正整数x.(x<=2000)输出如果x不是“大于等于6的偶数”,则输出一行:           Error!           否则输出这个数的所有分解形式,形式为:           x=y+z           其中x为待验证…
今天是钟皓曦老师的讲授~~ 总结了一下今天的内容: 数论!!! 1.整除性 2.质数 定义: 性质:  3.整数分解定理——算数基本定理 证明: 存在性: 设N是最小不满足唯一分解定理的整数 (1)  若N为质数,则N=N¹,所以N不存在: (2)  若N为合数,则N=P*(N/P),因为N/P也是不满足定理的整数 所以与N是不满足定理的最小整除相矛盾 所以N不存在 唯一性: 4.素数的判定 (注:s.t.是“使得”的意思) 根据钟神长者的小学经验:取2,3,5,7,13,29,37,89这8个…