#include
#include
#include
#include
#include
using namespace std;
#define N 1000000//12031230
int digit[N]; //记录素因子
int num[N]; //记录每个素因子个数
int c; //记录素因子的个数
void divid...
分类:
其他好文 时间:
2014-09-18 18:52:24
阅读次数:
212
欧拉函数定义:小于n且与n互素的数的个数欧拉函数为积性函数,满足积性函数的性质,即可以通过n的素因子的函数值求得n的欧拉函数值求值方式有两种,单个判断和打表代码如下int phi(int n){ int res=n; for(int i=2;i*i1) res=res-re...
分类:
其他好文 时间:
2014-09-12 22:00:44
阅读次数:
514
此题A得艰难,应该是有很多组数据吧,使得容易超时。直接求出组合数是不可能的,因而,只能把各个数都计算其各素因子个数,再计算即可。而直接计算,必定是要超时的,所以,只好先预处理所有结果,再输出了。首先筛选素数,分解0~440的素因子。然后,Cnk=(n*(n-1)*(n-2)*...(n-k+1))/...
分类:
其他好文 时间:
2014-09-12 21:57:34
阅读次数:
192
很好的入门题先测试是否为素数,若不是则进行素因子分解,算法详见总结贴 miller robin 和pollard rho算法AC代码#include #include#include#includeusing namespace std;long long ans;long long gcd(lon...
分类:
其他好文 时间:
2014-09-11 01:06:21
阅读次数:
215
埃氏筛法:从2开始,找到第一个没有被筛的数,把它标记为素数,然后把它的2倍、3倍……筛掉。复杂度O(nlogn)。改进的埃氏筛法:从2开始,找到第一个没有被筛的数x,把它标记为素数,然后把它的x倍、x+1倍……筛掉。复杂度O(nloglogn)。线性筛:保证每个数都被它的最小素因子筛掉。复杂度O(n...
分类:
其他好文 时间:
2014-09-08 00:54:46
阅读次数:
296
YEAH DONG DONG终于过了。这样思考,首先,要把所有素数求出来是不可能的。注意到L,R的差仅一百万,那么就可以只求这个范围内的素数了。而筛选范围内的素数,就可以用上一篇的方法,使用若n为合数,则必有素因子在sqrt(n)中。在筛选范围内的素数2了一次,直接判断每个数是否素数,TLE。。。#...
分类:
其他好文 时间:
2014-08-28 00:44:08
阅读次数:
253
直接套用模板,以后接着用这里还有一个素因子分解的模板 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #in...
分类:
其他好文 时间:
2014-08-21 01:31:13
阅读次数:
191
又是一道不明觉厉的题,做这道题需要分析以下几个点:
1.如果k的任意素因子大于M,那么说明k和M!一定互质。
原因:任何数都可以写成一个唯一分解式子:k = p1^a1 * p2^a2 * ……;(p1
那么如果k的任意素因子大于M,那么说明 p1 > M, 又因为 M! = 1 * 2 * …… * M;所以k和M!一定没有除了1以外约束。
2.欧拉公式:小于一个数(n)的所有质因子 ...
分类:
其他好文 时间:
2014-08-15 17:53:29
阅读次数:
411
1.欧几里得算法(辗转相除法)和唯一分解定理:
①唯一性分解定理:
算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。
算术基本定理的内容由两部分构成:
分解的存在性;
分解的唯一性,即若不考虑排列的顺序,正整数分解为素数乘积的方式是唯一的。
②辗转相除法:
是求最大公约数的算法。
辗转相除法基...
分类:
其他好文 时间:
2014-08-11 14:59:42
阅读次数:
330
题意:给n个石头,分成一些部分(最多n部分,随便分),问分完后每部分的数量的乘积有多少种情况。分析:可以看出,其实每个乘积都可以分解为素数的乘积,比如乘积为4,虽然可以分解为4*1,但是更可以分解为2*2*1,所以就可以枚举素因子来分解,dfs即可。代码:#include #include #inc...
分类:
其他好文 时间:
2014-08-05 21:56:00
阅读次数:
252