欧拉函数算法
㈠ 计算欧拉函数φ(100),写出详细过程
得知
φ(100)=φ(25*4)=φ(25)φ(4)=φ(5^2)φ(2^2)=5φ(5)*2φ(2)=5(5-1)*2(2-1)=40
㈡ 欧拉函数计算公式的推导(要详细过程)
性质① m是素数时,有φ(m)=m-1
性质② 当m、n互素时,φ(m*n)=φ(m)*φ(n)
性质③ 对一切正整数n,有φ(p^n)=[p^(n-1)]*(p-1)
㈢ 欧拉函数 Pascal (用线性筛法)
下面的代码用的是线性筛法求素数,然后再求GCD的方法。
programEulerPhi;
type
AList=arrayofWord;
procereaddtolist(vararr:AList;num:Word);
var
size:Word;
begin
size:=Length(arr);
setlength(arr,size+1);
arr[size]:=num;
end;
functionprime_decomp(num:Word):AList;
var
result:AList;
i:Word;
begin
result:=nil;
while((nummod2)=0)do
begin
addtolist(result,2);
num:=numdiv2;
end;
i:=3;
while(i*i<=num)do
begin
while((nummodi)=0)do
begin
addtolist(result,i);
num:=numdivi;
end;
i:=i+2;
end;
ifnum>2thenaddtolist(result,num);
prime_decomp:=result;
end;
functiongcd_check(constnum:Word;varlist:AList):boolean;
var
i:Word;
begin
fori:=low(list)tohigh(list)do
if(nummodlist[i])=0thenexit(false);
exit(true);
end;
var
instr:String;
i,num,errcode,phi:integer;
decomp:AList;
begin
writeln('Inputapositiveinteger:');
readln(instr);
repeat
Val(instr,num,errcode);
iferrcode=0thenbreak;
writeln('errorinput,tryagagin.');
until1=0;
decomp:=prime_decomp(num);
phi:=1;
fori:=2tonumdo
ifgcd_check(i,decomp)theninc(phi);
writeln('Euler''stotient=',phi);
end.
运行结果:
Inputapositiveinteger:
128
Euler'stotient=64
㈣ 请问有什么算法可以“根据两个素数的乘积和这两个素数的欧拉函数,快速地求解得到这两个素数”谢谢!
一个素数p的欧拉函数的值是p-1,因为欧拉函数的定义就是比这个数字小的所有数字中,与他互素的个数比他小的有p-1个,而且p是素数,不可能有除1以外的因子了,而比p小的数又不可能是p的倍数,所以就都和他互质.
你给两个素数的欧拉函数 值吗?只要给一个就行了啊
p*q=n
p的欧拉值为m
那么p=m+1
q=n/(m+1)
㈤ 算法里的MOD是什么意思,怎么运算
意思就是取模,就是取余数。运算方法:比如10mod3,余数是1,结果就是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)的值使用算术基本定理便知, 若n = \prod_{p\mid n} p^{\alpha_p}, 则\varphi(n) = \prod_{p\mid n} p^{\alpha_p-1}(p-1) = n\prod_{p|n}\left(1-\frac{1}{p}\right)。 例如\varphi(72)=\varphi(2^3\times3^2)=2^{3-1}(2-1)\times3^{2-1}(3-1)=2^2\times1\times3\times2=24 [编辑]和费马小定理的关系对任何两个互质的正整数a, m,m\ge2,有 a^{\varphi(m)} \equiv 1 \pmod m 当m是质数p时,此式则为: a^{p-1} \equiv 1 \pmod p 即费马小定理。de:Eulersche φ-Funktion en:Euler's totient function es:Función fi de Euler fr:Indicatrice d'Euler hu:Euler-függvény it:Funzione phi di Eulero ja:オイラーのφ関数 ko: nl:Indicator van n sl:Eulerjeva funkcija fi sv:Eulers phi-funktion 取自" http://wiki.keyin.cn/index.php/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0"
㈦ C语言算一个数欧拉函数,输入0结束
unsigned int ss(unsigned int a)
{
unsigned int i;
for(i=2;i*i<=a;i++) {
if(a%i==0) break;
}
if(i*i<=a) return 0;
else return 1;
}
这个判断素数的函数逻辑是:
i在2~根号a(a是外部传入的需要判断的正整数)之间循环递增1,
如果a能被i整除,则跳出循环,否则继续循环直至i大于根号a退出循环,
退出循环后,判断当前i值是否小于根号a,
小于等于根号a,则是中途退出,返回0(是合数);
大于根号a,则是循环条件完成退出,返回1(是质数)。
函数ss( a)在函数unsigned int oula(unsigned int n)中调用
unsigned int oula(unsigned int n)
{
unsigned int f=n,p;
for(p=2;p<=n;p++)
if(ss(p)&&(n%p==0)) f=f*(1-(1/p)); 调用处
return f;
}
输入100,000,000,要看编译器对unsigned int的定义,
如果编译器定义为2 byte,则范围是:0~2^16-1(62353),此时100,000,000会溢出。
如果编译器定义为4 byte,则范围是:0~4294967295,大于100,000,000.此时可以输入,但因数据太大,计算完成要超过2分钟(用去年主流配置的x86电脑测试),输入10,000,000就感觉明显的时延,要约20秒才能输出结果。
测试截图如下图:
另,函数unsigned int oula(unsigned int n)需要改成:
unsigned int oula(unsigned int n)
{
unsigned int f=n,p;
for(p=2;p<=n;p++)
if(ss(p)&&(n%p==0))
//f=f*(1-(1/p)); //修改小数部分丢失问题
f=f*(p-1)/p;
return f;
}
供参考。
㈧ 欧拉函数21怎么算
欧拉函数21计算:
分解质因数:21=2^3*3*5。
欧拉函数:φ(21)=21*(1-1/2)(1-1/3)(1-1/5)=120*1/2*2/3*4/5=32。
小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值φ:N→N,n→φ(n)称为欧拉函数。
函数的近代定义
是给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表示,函数概念含有三个要素:定义域A、值域B和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。
㈨ 欧拉函数φ(120)怎么算
分解质因数:120=2^3*3*5
欧拉函数:φ(120)=120*(1-1/2)(1-1/3)(1-1/5)=120*1/2*2/3*4/5=32
小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。
设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值φ:N→N,n→φ(n)称为欧拉函数。
(9)欧拉函数算法扩展阅读:
利用欧拉函数和它本身不同质因数的关系,用筛法计算出某个范围内所有数的欧拉函数值。
如:
ψ(10)=10×(1-1/2)×(1-1/5)=4;
ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8。
㈩ 计算20以内的正整数的欧拉函数值
phi(1)=1
phi(2)=1
phi(3)=2
phi(4)=2
phi(5)=4
phi(6)=2
phi(7)=6
phi(8)=4
phi(9)=6
phi(10)=4
phi(11)=10
phi(12)=4
phi(13)=12
phi(14)=6
phi(15)=8
phi(16)=8
phi(17)=16
phi(18)=6
phi(19)=18
phi(20)=8
具体计算规则将n素因子分解为(p1^a1)(p2^a2)...(pk^ak)
则phi(n)=n(1-1/p1)(1-1/p2).....(1-1/pk)
如n=18=2×3² 则phi(18)=18(1-1/2)(1-1/3)=18×1/2×2/3=9×2/3=6