求证一个数的因子的欧拉函数和等于它本身。求证1..n中与n什么叫互质数的数的和为n*phi(n)/2。

神奇的O(n)筛素数和求欧拉函数
神奇的O(n)筛素数和求欧拉函数
[摘要:用最小的素果子筛失落每一个数 int prime[N],phi[N],// prime:纪录量数,phi纪录欧推函数 int Min_factor[N];// i的最小素果子 bool vis[N]; void Init() { cnt=0; phi[1]=1; for(int i=2;iN;i++) { if(!vis[i]) { prime]
用最小的素因子筛掉每个数 int prime[N],phi[N],// prime:记录质数,phi记录欧拉函数 int Min_factor[N];// i的最小素因子 bool vis[N]; void Init() {
for(int i=2;i&N;i++)
if(!vis[i])
prime[++cnt]=i;
phi[i]=i-1;
Min_factor[i]=i;
for(int k=1;k&=cnt&&prime[k]*i&N;k++)
x=prime[k]*i;
Min_factor[x]=prime[k];
if(i%prime[k]==0)
phi[x]=phi[i]*prime[k];
else phi[x]=phi[i]*(prime[k]-1);
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊求欧拉函数的计算公式_百度知道
求欧拉函数的计算公式
n互素时,有φ(m)=m-1性质② 当m性质① m是素数时,φ(m*n)=φ(m)*φ(n)性质③ 对一切正整数n
其他类似问题
为您推荐:
欧拉函数的相关知识
其他1条回答
欧拉函数From KeyinWikiJump to: navigation, search在数论,对正整数n,欧拉函数\varphi(n)是少於或等於n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如\varphi(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。 [编辑]φ函数的值\varphi(1)=1(唯一和1互质的数就是1本身)。 若n是质数p的k次幂,\varphi(n)=p^a-p^{a-1}=(p-1)p^{k-1},因为除了p的倍数外,其他数都跟n互质。 欧拉函数是积性函数——若m,n互质,\varphi(mn)=\varphi(m)\varphi(n)。证明:设A, B, C是跟m, n, mn互质的数的集,据中国剩馀定理,A \times B和C可建立一一对应的关系。因此\varphi(n)的值使用算术基...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁BZOJ-2818-Gcd(欧拉函数/Mobius反演)
Description给定整数N,求1&=x,y&=N且Gcd(x,y)为素数的数对(x,y)有多少对.Input一个整数NOutput如题Sample Input4Sample Output4HINThint对于样例(2,2),(2,4),(3,3),(4,2)1&=N&=10^7首先欧拉函数:小推一下公式:Ans=prime(p)sigma(n,x=1)sigma(n,y=1)gcd(x,y)=p& & & &=prime(p)sigma(n/p,x=1)sigma(n/p,y=1)gcd(x,y)=1显然,预先累加处理一下欧拉函数phi[i]表示i内(x,y)互质对数,然后枚举n的质因子p,累加就可以了,但是注意此题答案无序,而预先处理出的是有序的,所以需要乘2再减掉重复的形如(3,3)的就好。#include &bits/stdc++.h&#define INF 0x3f3f3f3f#define LL long long#define bug cout&&&bug/n&const int MAXN = 1e7+7;const int MAXM = 1e9+7;long long phi[MAXN];long long prime[MAXN];int num_void get_euler(int n){
num_prime=0;
memset(phi,0,sizeof(phi));
for(long long i=2; i&=n; ++i)
if(!phi[i])
prime[num_prime++]=i;
for(long long j=i; j&=n; j+=i)
if(!phi[j])
phi[j]=phi[j]/i*(i-1);
}}int main(){
//get_euler();
scanf(&%I64d&,&n);
get_euler(n);
long long ans=0;
for(int i=2; i&=n; ++i)
phi[i]+=phi[i-1];
for(int i=0; i&num_ ++i)
ans+=phi[n/prime[i]];
ans=ans*2+num_
printf(&%lld/n&,ans);
//cout&&ans&&
return 0;}
最新教程周点击榜
微信扫一扫推荐这篇日记的豆列
······posts - 104,&
comments - 5,&
trackbacks - 0
欧拉函数在OI中是个非常重要的东西,不知道的话会吃大亏的.
欧拉函数用希腊字母&表示,&(N)表示N的欧拉函数.
对&(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数.
欧拉函数的一些性质:
1.欧拉函数是积性函数,但不是完全积性函数,即&(mn)=&(n)*&(m)只在(n,m)=1时成立.
2.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn.
&& &(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn).
3.除了N=2,&(N)都是偶数.
4.设N为正整数,&&(d)=N (d|N).
根据性质2,我们可以在O(sqrt(n))的时间内求出一个数的欧拉函数值.
code:(代码来自POJ2407,一道裸的欧拉函数应用)
function phi(num:longint):
for o:=2 to trunc(sqrt(num)) do
if x mod o=0 then
ret:=ret*(1-1/o);
while x mod o=0 do x:=
if x&1 then ret:=ret*(1-1/x);
phi:=round(ret);
while not seekeof do
readln(n);
writeln(phi(n));
如果我们要求1000000以内所有数的欧拉函数,怎么办.
上面的方法复杂度将高达O(N*sqrt(N)).
我们来看看线性筛法的程序:
const MAX=1000000;
Prime:array[0..MAX]
v:array[0..MAX]
procedure GetP
i,j,tmp,size:
fillchar(v,sizeof(v),0);
for i:=2 to MAX do
if not v[i] then
inc(size);
prime[size]:=i;
while (j&=size)and(prime[j]*i&MAX) do
v[i*prime[j]]:=
if i mod prime[j]=0
它在O(N)的时间内遍历了所有的数,并且有很多的附加信息,
那么我们是不是能在筛素数的同时求出所有数的欧拉函数呢.
答案是可以.
1.对于筛出来的素数,&(P)=P-1.
在while循环内
2.若i mod prime[j]=0,那么&(i*prime[j])=&(i)*prime[j]
3.若i mod prime[j]&0,那么&(i*prime[j])=&(i)*(prime[j]-1)
2,3请读者自己证明,其中3用到了欧拉函数的积性.
const MAX=1000000;
Phi,Prime:array[0..MAX]
v:array[0..MAX]
procedure GetP
i,j,tmp,size:
fillchar(v,sizeof(v),0);
for i:=2 to MAX do
if not v[i] then
inc(size);
prime[size]:=i;
phi[i]:=i-1;
while (j&=size)and(prime[j]*i&MAX) do
tmp:=i*prime[j];
if i mod prime[j]=0 then
phi[tmp]:=phi[i]*prime[j];
else phi[tmp]:=phi[i]*(prime[j]-1);
阅读(...) 评论()

我要回帖

更多关于 互质数是什么意思 的文章

 

随机推荐