POJ2635(数论+欧拉筛+大数除法)】的更多相关文章

题目链接:https://vjudge.net/problem/POJ-2635 题意:给定一个由两个质数积的大数M和一个数L,问大数M的其中较小的质数是否小于L. 题解:因为大数M已经超过long long 范围,那么我们就需要进行大数分解由十进制转换为1000进制,然后只要从2-L遍历一遍. 代码详情: 1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<cstrin…
折腾了一晚上很水的数论,整个人都萌萌哒 主要看了欧拉筛和素数筛的O(n)的算法 这个比那个一长串英文名的算法的优势在于没有多次计算一个数,也就是说一个数只筛了一次,主要是在%==0之后跳出实现的,具体的解释看的迷迷糊糊,特别是欧拉函数的求解 http://blog.csdn.net/lerenceray/article/details/12420725 代码如下 void ES(){ ;i<n;i++){ if (!pd[i]){ prime[++top]=i; phi[i]=i-; } ;j<…
欧拉筛模板题 #include<cstdio> using namespace std; const int N=40003; int num=0,prime[N],phi[N]; bool notp[N]; inline void shai(int n){ phi[1]=1; for(int i=2;i<=n;++i){ if (!notp[i]){ prime[++num]=i; phi[i]=i-1; } for(int j=1;j<=num&&i*prime…
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1181 思路:欧拉筛出所有素数和一个数的判定,找到大于n的最小质数序号p,并且判断p是不是质数,输出这个数. /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ mind! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┃┃┃┃┃┃ ┻┻┻┻┻…
题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大公约数为一,那这题的意思就变成了,在一个n * n的方格内寻找所有点的横坐标和纵坐标互质的点的个数. 但是这样复杂度肯定是过不去的.打表时间花费也是很多的,所以我们需要找到加快速度的方法,就是用欧拉函数来加快速度,所以我们就要实现大的优化,我们先明确欧拉函数是个什么东西. 欧拉函数 \(φ(x)\)…
题意:哥德巴赫猜想.问一个大于2的偶数能被几对素数对相加. 思路:欧拉筛,因为在n<215,在3万多,一个欧拉筛得时间差不多4*104, 那么筛出来的素数有4千多个,那么两两组合直接打表,时间复杂度下于16*106 则时间还是卡的过去. ac代码: #include<cstdio> const int N = 4e4; int prime[N]; bool vis[N]; bool is_prime[N]; ]; int Prime() { ; ; i <= N; ++i) { i…
YAPTCHA Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1490    Accepted Submission(s): 811 Problem Description The math department has been having problems lately. Due to immense amount of uns…
Deciphering Password Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2357    Accepted Submission(s): 670 Problem Description Xiaoming has just come up with a new way for encryption, by calculati…
给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取. 本题大意: 给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数.要求变换过程中的数也都是素数. 本题思路: 求最小步数,用BFS,判断素数,用欧拉筛打表. 参考代码: #include <cstdio> #include <queue> #include <map> #include <cstring> using namespace std; ; + ;…
洛谷传送门 Farey Sequence (格式太难调,题面就不放了) 分析: 实际上求分数个数就是个幌子,观察可以得到,所求的就是$\sum^n_{i=2}\phi (i)$,所以直接欧拉筛+前缀和即可. Code: #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> #include<iomanip> #in…
嗯.... 埃氏筛和欧拉筛的思想都是相似的: 如果一个数是素数,那么它的所有倍数都不是素数.... 这里主要介绍一下欧拉筛的思路:(欧拉筛的复杂度大约在O(n)左右... 定义一个prime数组,这个数组被称为“素数表”,里面的数都为素数:然后用一个vis数组,如果一个数不是素数,则标记为1. 然后把i从2到n进行枚举,如果它没被访问过,则将其加入素数表中:然后for循环素数表,如果i % prime[j] == 0,则break即可, 因为prime[j]作为i的一个质因数,在某一种情况下,它…
Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a very popular coach for his success. He needs some bamboos for his students, so he asked his assistant Bi-Shoe to go to the market and buy them. Plenty of Bamboos of…
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如右图).  现在,C君希望你告诉他队伍整齐时能看到的学生人数. 输入输出格式 输入格式: 共一个数N 输出格式: 共一个数,即C君应看到的学生人数. 思路: 典型的欧拉筛 为了帮助萌新,我先从欧拉函数开讲 什么是欧拉函数? 定义:与一个数的约数有且只有1的数(互质)的个数(比如说2有1一个,6有1,5两…
给出N个正整数,检测每个数是否为质数.如果是,输出"Yes",否则输出"No".   Input 第1行:一个数N,表示正整数的数量.(1 <= N <= 1000) 第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9) Output 输出共N行,每行为 Yes 或 No. Input示例 5 2 3 4 5 6 Output示例 Yes Yes No Yes No 解:先使用欧拉筛法找到(int)sqrt(1e9)+1=…
题目大意:给出范围为(0, 0)到(n, n)的整点,你站在原点处,问有多少个整点可见. 线y=x和坐标轴上的点都被(1,0)(0,1)(1,1)挡住了.除这三个钉子外,如果一个点(x,y)不互质,则它就会被点(x0, y0) (x0,y0互质,x/x0==y/y0)挡住.能看见的钉子关于线y=x对称.所以,求出x=2至n的所有与x互质的数的个数φ(x)的和(也就是线y=x右下角(因为φ(x)<x)所有能看见的点的个数)乘以2(对角线两旁的看见的点的个数)+3(那几个特殊点)即为所求. 求φ值时…
我们一般写的埃氏筛消耗的时间都是欧拉筛的三倍,但是欧拉筛并不好想(对于我这种蒟蒻) 虽然 -- 我 -- 也可以背过模板,但是写个不会的欧拉筛不如写个简单易懂的埃氏筛 于是就有了优化 这个优化还是比较厉害的,能把埃氏筛的消耗的时间提的跟欧拉筛差不多 以下内容需要先学会埃氏筛 学会的埃氏筛就明白它的原理了吧 #include<bits/stdc++.h> using namespace std; int n, m ,Is_p[10000001]; int main() { cin >>…
题意:给定n个数ai(n<=1e6,ai<=1e6),定义,并且fac(l,r)为mul(l,r)的不同质因数的个数,求 思路:可以先用欧拉筛求出1e6以内的所有质数,然后对所有ai判断,如果ai不是质数就利用唯一分解定理计算其所有质因数.然后按照顺序依次计算每个质因子的贡献.假设n=5,对质因子2,依次记录它在数组出现的下标,如果它在2.4下标出现了,那么它的贡献即为所有包含2或4的区间个数,逆向计算,即所有区间个数-不包含2和4的区间个数,即 n(n+1)/2-m1(m1+1)/2-m2(…
大数据用 python? 速度感人 突然来了一发 python 欧拉筛,调了半天之后输入 1e7 过了几秒钟之后出解了,PY 果然神速 没学过 PY 的小同学可以当做 VB 的阅读程序,反正语言隔离都差不多[雾 Code import os import ssl import urllib import time import re import urllib def getPrime(n): v=[0 for i in range(n+3)] p=[] for i in range(2,n+1…
我是知道φ(n)=n-1,n为质数  的,然后给的样例在纸上一算,嗯,好像是找往上最近的质数就行了,而且有些合数的欧拉函数值还会比比它小一点的质数的欧拉函数值要小,所以坚定了往上找最近的质数的决心——不过11往上最近的质数是13,不能包括本身. 这样胡来居然AC了,但是之后还是老老实实地去看别人怎么做. 把代码贴出来供后来人观赏: #include<cstdio> #include<cstring> #include<vector> using namespace st…
https://blog.csdn.net/qq_39763472/article/details/82428602 模板来自https://blog.csdn.net/Avalon_cc/article/details/81663214 bool isP[N]; int P[N], ind; void Euler() { mem(isP,); mu[]=; ind=; ;i<N;i++) { ; ;j<ind;j++) { if(i*P[j]>N) break; isP[i*P[j]]…
Goldbach's Conjecture: For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 and p2 such that n = p1 + p2. This conjecture has not been proved nor refused yet. No one is sure whether this conjecture actu…
我也不清楚这是什么高级算法,欧拉筛是昨天有位大佬,半夜无意间告诉我的 欧拉筛: 主要的含义就是我把这个数的所有倍数都弄出来,然后下次循环的时候直接就可以跳过了 import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; public class 求指数 { public static ArrayList<Integer> list =…
整数的唯一分解定理: \(\forall A\in \mathbb {N} ,\,A>1\quad \exists \prod\limits _{i=1}^{s}p_{i}^{a_{i}}=A\),其中\({\displaystyle p_{1}<p_{2}<p_{3}<\cdots <p_{s}}\)而且 \(p_{i}\)是一个质数, \(a_{i}\in \mathbb {Z} ^{+}\)(摘自维基百科) 欧拉筛通过使每个整数只会被它的最小质因子筛到来保证时间复杂度,…
题意就是求10^9以内的正整数的欧拉函数(Φ(n)表示<=n的与n互质的正整数个数). 解法:用欧拉筛和欧拉函数的一些性质:    1.若p是质数,Φ(p)=p-1:    2.欧拉函数是积性函数,即若a,b互质,则Φ(ab)=Φ(a)*Φ(b):    3.若a,b不互质,则Φ(ab)=Φ(a)*b. 若 n≤10^6,可以通过欧拉筛用数组预处理得出:若不是,再分解质因数,利用Φ(n)=n*(1-1/p1)*(1-1/p2)*...*(1-1/pk) {除去各质因数的 n 以内的倍数}求出.…
题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 2478]Farey Sequence(数论--欧拉函数 找规律求前缀和) 求 x/y,gcd(x,y)=1 且 x<y 很像.   而由于这里 x可等于或大于y,于是就求 欧拉函数的前缀和*2+边缘2个点+对角线1个点. 1 #include<cstdio> 2 #include<cst…
题意:定义 Fn 序列表示一串 <1 的分数,分数为最简分数,且分母 ≤n .问该序列的个数.(2≤N≤10^6) 解法:先暴力找规律(代码见屏蔽处),发现 Fn 序列的个数就是 Φ(1)~Φ(n) 的和.于是用欧拉筛预处理就好了. 注意--求前缀和要用 long long 的类型. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 usi…
今天zky学长讲数论,上午水,舒爽的不行..后来下午直接while(true){懵逼:}死循全程懵逼....(可怕)Thinking Bear. 2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2092 Solved: 1325 [Submit][Status][Discuss] Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6390 直接开始证明: 我们设…………………………………….....…...............……………...(1) 则…................................….…(2) 为什么是这样呢,因为我们知道 同理得到b的分解和的分解 我们会发现,虽然a和b的分解里可以有相等的部分,但是在里的也就是我们假设为的部分是不会有重复的,那么要由*得出也就是要去除重复部分,的重复部分就是…
题目链接 先看题目中给的函数f(n)和g(n) 对于f(n),若自然数对(x,y)满足 x+y=n,且gcd(x,y)=1,则这样的数对对数为f(n) 证明f(n)=phi(n) 设有命题 对任意自然数x满足x<n,gcd(x,n)=1等价于gcd(x,y)=1 成立,则该式显然成立,下面证明这个命题. 假设gcd(x,y)=1时,gcd(x,n)=k!=1,则n=n'k,x=x'k,gcd(x,y)=gcd(x,n-x)=gcd(x'k,(n'-x')k)=k,与假设gcd(x,y)=1不符,…
欧拉筛法可以以\(O(n)\)的时间,空间复杂度求出\(1-n\)范围内的所有质数. 其核心思想是每个合数仅会被其最小的质因数筛去一次. See this website for more details. ```cpp #include <iostream> #include <cstdio> using namespace std; const int MAXN(1000001); int n_prime(0); bool not_prime[MAXN]; int prime[…