前几天,在杭电oj上碰到一个数论的题目,附链接: http://acm.hdu.edu.cn/showproblem.php?pid=1286
题意很简单,就是求一个数N比他小的与它互素(最大公约数为1)的数有多少个。
刚开始想要暴力的方法去解决这个问题,但后来发现暴力的时间复杂度是O(n^2),而N是32768以内的整数,测试数据有10000组,明显暴力会超时。
后来教练讲了下,说这种题目要用欧拉函数解决,一个很裸的水题。
这里介绍下欧拉函数
Phi(n)=n(1-1/p1) (1-1/p2)….. (1-1/pk)
其中p1, p2 ,pk是n的所有素数因子
Phi(n):所有小于等于n的且与n互素的数的个数
有了这个定理,这道题的确很容易了(以前没怎么接触数论的题TT)
下面贴代码:
#include<stdio.h>
#include<math.h>
int prime[3600],isprime[32768];
int primeNum;
int findPrime(){
primeNum = 0;
for(int i=2;i<32768;i++){
if(isprime[i]) continue;
prime[primeNum++] = i;
for(int j=i*i;j<32768;j+=i)
isprime[j] = 1;
}
return 0;
}
int main(){
findPrime();
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
double tmp = n;
int p = 0;
while(n!=1){
if(n%prime[p]==0){
tmp *=1-1.0/prime[p];
while(n%prime[p]==0)
n /= prime[p];
}
p++;
}
printf("%d\n",(int)round(tmp));
}
return 0;
}
分享到:
相关推荐
算法-数论- 欧拉函数.rar
初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序
欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 完全余数集合: 定义小于 n 且和 n 互质的数构成的集合为 Zn ,称呼这个集合为...
ACM/ICPC模板 内容大概有这些 其他 --高精度模板 --RMQ --改点堆优化的dijkstra算法 --快速付利叶变换 ...--SPFA(最短路快速算法) // thanks to love...--欧拉函数 --初等数论(模线性方程组,gcd相关等) --素数判断
欧拉函数的一些性质: ① 当m,n互质时,有phi(m*n)= phi(m)*phi(n); ② 若i%p==0,有phi(i*p) = p * phi(i); ③ 对于互质x与p,有x^phi§≡1(mod p),因此x的逆元为x^(phi§-1),即欧拉定理。 (特别地,...
G题- 互质数的个数 数论-欧拉函数,数论-快速幂 求小于a^b与a^b互质的数的个数 H题- 异或和之差 数论-位运算,字符串-字典树 n 个元素的数组 Ai。求出不相交的子段内的数的异或和的差值的最大值。 I题- 公因数匹配 ...
文中研究了一个类似欧拉函数φ(n)的新的Smarandache可乘数论函数J(n),其中J(n)为模n所有原Dirichlet特征的个数,即J(n)=n∏p|n(p-1)2.利用初等数论的方法解决了J(n)可乘数论函数在简单数序列中的均值问题,并给出了一...
《初等数论》(第四版)(闵嗣鹤,严士健编)第三章同余的5个小节的习题答案:①同余的概念及其基本性质,②剩余类及完全剩余系,③既约剩余系与欧拉函数,④欧拉定理,⑥三角和的概念。
初等数论中简化剩余系 欧拉函数值程序初等数论中简化剩余系 欧拉函数值程序初等数论中简化剩余系 欧拉函数值程序初等数论中简化剩余系 欧拉函数值程序
研究了一个数论问题:欧拉函数的例外值,得到了 n =4p 1α1 p 2α2…p sαs ( p 1 ,…, p s为互异的奇质数)即 4‖n的 n为 Euler函数例外值的充分必要条件. 213 山西大学学报(自然科学版) 30( 3) 2007
文章目录一些简单的定义和技巧各种证明杜教筛一、莫比乌斯函数前缀和二、欧拉函数前缀和三、i∗φ(i)i*\varphi(i)i∗φ(i)前缀和四、i3∗μ(i)i^3*\mu(i)i3∗μ(i)前缀和五、变形技巧 一些简单的定义和技巧 数论分块...
其主要内容涉及和式、整值函数、数论、二项式系数、特殊的数、生成函数、离散概率、渐近式等,都是编程所必备的知识.另外,本书包括了六大类500 多道习题,并给出了所有习题的解答,有助读者加深书中内容的理解 [1]...
欧拉公式求长期率的matlab代码Acm代码档案 尽管我喜欢多种语言,但该acm代码档案主要是由C++实现的。...欧拉函数 其他一些公式 动态编程 零一包 竞争包 未分类 排列 非递归遍历树(级别顺序,前顺序,有序和后顺序)
目录 1 一. 扩展的欧几里德和不定方程的解 2 二. 中国同余定理 3 三. 原根 5 四. 积性函数 6 五. 欧拉函数性质 7 六. 线性求1-max的欧拉...七. 求单个欧拉函数,求最小的x(phi(n)%x==0),使得2^x =1(mod n) 10
acm常用的数论模板,集合运算类。有欧几里德、中国剩余定理、欧拉函数等
我自己的一个关于数论入门的算法课件,是我们学校acm集训课程的一个项目,讲了快速幂的实现和欧拉函数,讲的很详细易懂,这个ppt我做了两个礼拜
ACM数论,挺好理解的文档,从辗转相除求gcd到欧拉定理,再到积性函数,到莫比乌斯函数,迪利克雷卷积,最后到因式分解,可以说是很细很全的数论资料了!
微分学基础(英文版),欧拉数学史上公认的4名最伟大的数学家之一:阿基米德、牛顿、欧拉和高斯,几乎每一个数学领域都可以看到欧拉的名字——初等几何的欧拉线、多面体的欧拉定理、立体解析几何的欧拉变换公式、...
欧拉公式求长期率的matlab代码数论Python 实现数论资料的Python模块集合。 Number-Theory-Python软件包当前包括: NumbThy.pdf:数论短期课程 numbthy.py:基本数论函数 gaussint.py:对高斯整数的基本运算 ...
元素不尽相异的排列问题,常新德,,本文通过排列的周期概念的引入,利用数论中茂陛乌斯函数和欧拉函数,导出了n个不尽相异元素的圆排列数公式和计算环排列数的公式�