P1174 互素
时间: 1000ms / 空间: 131072KiB / Java类名: Main
描述
对于某个数n,,我们这次的工作仅是求出小于n且和n互质的数的个数,,比如n=10时 1,3,7,9均与10互质
互质的定义是gcd(a,b)=1
输入格式
输入只有一行,一个数N(1<=N<=2,000,000,000)。
输出格式
输出也只有一行,输出和小于n且和n互质的数的个数
测试样例1
输入
10
输出
4
欧拉函数
传说中数论的欧拉函数.
设φ(n)是比n小的数中与n互质的数的个数。
则对于n的质因数分解n=p1^a1*p2^a2*…*pi^ai
φ(n)=n(1-1/p1)(1-1/p2)…(1-1/pi);
program mys;
var i,j,k:longint;
n,m,ans:int64;
begin
readln(n);
m:=n;
ans:=n;
for i:=2 to trunc(sqrt(n)) do
if m mod i=0 then
begin
while m mod i=0 do
m:=m div i;
ans:=ans div i*(i-1);
end;
if m<>1 then
ans:=ans div m*(m-1);
writeln(ans);
end.