拿不定主意的东东(欧拉函数)

欧拉函数
定义:用于计算 p(n),比n小的所有与n互质的数。
计算公式:p(n)=n*(1-1/p1)(1-1/p2)….(1-1/pk)【p1,p2,pk都是n的素因子】

另:若n=p1^q1*p2^q2*…..*pk^qk

则,p(n)=(p1-1)p1^(q1-1)(p1-1)p2^(q2-1)……(pk-1)*pk^(qk-1)

性质:若m,n互质,φ(mn)=φ(m)φ(n)。当n为奇数时,φ(2n)=φ(n)

欧拉定理:

a,m互质,a^φ(m)≡1(mod m)

例:2,3互质,那么,2^2%3=1

推论:对于互质的数a、n,满足a^(φ(n)+1) ≡ a (mod n)

欧拉公式的延伸:小于n 与n互质的数的和 是euler(n)*n/2

这里写图片描述

program df;
var i,j,n,m,x,y,z,k,t,ans:longint;
b:array[0..100000] of boolean;
function gcd(x,y:longint):longint;
begin
if y=0 then exit(x)
else gcd:=gcd(y,x mod y);
end;

function zhe(n:longint):longint; //求所有因子的和
var i,j,z:longint;
begin
j:=0;
for i:=1 to trunc(sqrt(n)) do
if n mod i=0 then
begin
if i=trunc(sqrt(n)) then
begin
z:=n div i;
j:=j+i;
if i<>z then j:=j+z;
end
else
begin
j:=j+i;
j:=j+n div i;
end;
end;
exit(j);
end;

function che(n:longint):longint; //欧拉函数公式求质因子个数
var i,j,m,x:longint;
begin
x:=n;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then
begin
x:=x-(x div i);
while n mod i=0 do
n:=n div i;
end;
if n>1 then x:=x-x div n;
exit(x);
end;

begin
assign(input,’check.in’);
reset(input);
assign(output,’check.out’);
rewrite(output);
readln(t);
for i:=1 to t do
begin
readln(n);
ans:=zhe(n); //ans为所有因子之和
writeln(che(ans));
end;
close(input);
close(output);
end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值