[jzoj 1164] 求和 {欧拉函数}
程序员文章站
2024-02-11 13:19:34
...
题目
Description
若两个数的最大公约数为1,则这两个数互质。现在给出一个正整数N(1<=2^31-1),你的任务是求出1~N中与N互质的数的总和。
Input
一个整数N
Output
一个整数sum,表示1~N中与N互质的数的总和。
解题思路
至于为什么,请看下面的证明(真心很难看懂):
代码
#include<cstdio>
#include<cmath>
using namespace std;
long long n;
int phi(long long n)
{
long long ans=n;
for (long long i=2;i<=sqrt(n);i++)
if (n%i==0) {
ans=ans/i*(i-1);
while (n%i==0) n/=i;
}
if (n>1) ans=ans/n*(n-1);
return ans;
}
int main()
{
scanf("%lld",&n);
printf("%lld",phi(n)*n/2);
}
下一篇: Jzoj4747 被粉碎的线段树
推荐阅读
-
[jzoj 1164] 求和 {欧拉函数}
-
(至少要几个8才能整除给定的数)POJ 3696 The Luckiest number 欧拉函数 或 BSGS
-
Educational Codeforces Round 81 (Rated for Div. 2) - D. Same GCDs - 扩欧+欧拉函数
-
计数_欧拉 phi 函数
-
BZOJ3288: Mato矩阵(欧拉函数 高斯消元)
-
BZOJ2705: [SDOI2012]Longge的问题(欧拉函数)
-
[扩展欧拉函数]luoguP1516青蛙的约会
-
欧拉函数-gcd-快速幂(牛客寒假算法基础集训营1-D-小a与黄金街道)
-
[SDOI2008]仪仗队(欧拉函数)
-
BZOJ4805: 欧拉函数求和(杜教筛)