欧拉函数の应用;;;
来源:互联网 发布:java.util.date怎么用 编辑:程序博客网 时间:2024/06/06 23:32
Longge 的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了:
定一个整数 N ,你需要求出 Σ gcd(i, N)(1<=i<=N) 。
输入描述 Input Description
的第一行包含一个整数 N ,如题所示
输出描述 Output Description
第一行包含一个整数,为所求的答案。
样例输入 Sample Input
6
样例输出 Sample Output
15
数据范围及提示 Data Size & Hint
对于 60% 的数据, 0N<=2^16 。
对于 100% 的数据, 0N<=2^32 。
gcd(i,n)=1 即求N的欧拉函数,gcd(i,n)<>1 即,设 m=gcd(i,n) 就是说m一定为n的约数,所以就要求 有多少个 i满足此式; 因为 gcd(i,n)=m,
gcd(i/m,n/m)=1; i/m与n/m 互质,所以 n/m的欧拉函数就是 i 的个数;然后在用 (i 的个数)*(gcd(i,n));
即 oula(n/m)*m;
program exam1;
var n,m,i,j,s,k:longint;
sum:int64;
function gcd(a,b:longint):longint;
begin
if b=0 then exit(a) else gcd:=gcd(b,a mod b);
end;
function tot(x:longint):int64;
var i,j,k:longint;
begin
k:=x;
tot:=x;
for i:=2 to trunc(sqrt(x)) do
if k mod i=0 then
begin
tot:=tot-tot div i;
while k mod i=0 do k:=k div i;
if k=1 then break;
end;
if (k<>1)and(k<>x) then begin tot:=tot-tot div k; k:=1; end; ////最后不要忘了判断;;;最后一个质因子;;;
if k<>1 then dec(tot);
end;
begin
readln(n);
sum:=n;
for i:=2 to trunc(sqrt(n)) do //到算数平方根;
if n mod i=0 then
begin
k:=n div i;
sum:=sum+tot(i)*k; // i:=n/k;
if n div i<>i then
sum:=sum+tot(k)*i;// k:=n/i;
end;
sum:=sum+tot(n); //gcd(i,n)=1; 时的结果;
writeln(sum);
end.
- 欧拉函数の应用;;;
- 欧拉函数应用
- 欧拉函数应用
- 欧拉函数应用1
- 欧拉函数的应用
- 欧拉函数及其应用
- 欧拉函数的应用
- 欧拉函数简单应用
- -----欧拉函数的应用
- 欧拉函数的应用&&Relatives
- Visible Lattice Points 欧拉函数应用
- Divisors 欧拉函数的应用
- Calculation 2 欧拉函数的应用
- poj 2480 (欧拉函数应用)
- poj 3090 (欧拉函数应用)
- poj2407 Relatives 欧拉函数基本应用
- GCD +hdu+欧拉函数的应用
- 2588 欧拉函数的应用
- 常用算法整理:动态规划上
- 利用TelephonyManager(电话管理器)类来去的手机通话状态、网络、位置、Sim卡等信息
- 构造函数、静态语句块、非静态语句块的执行顺序
- 浅谈IT企业人力资源流失现状与对策
- 基于laravel 的博客平台 -- Vuedo
- 欧拉函数の应用;;;
- Ural1079-Maximum
- Yii 快速入门-初级教程
- 不定方程
- 两个文件的回调简单记录一下
- 常用算法整理:二分查找
- MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署
- Linux下源码编译安装node.js
- spring注解