正题
大意
给出一个 n n ,求里面和 n n 互质的数的和。
解题思路
表示的就是 1∼i 1 ∼ i 里面和 i i 互质的个数。然后数字和就是。
代码
#include<cstdio>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
ll a,ans,n;
int main()
{
scanf("%lld",&a);
n=a;
ans=a;
for (ll i=2;i<=sqrt(a);i++)
if (a%i==0){
ans=ans/i*(i-1);//计算
while(a%i==0) a/=i;//取出质数
}
if (a>1) ans=ans/a*(a-1);//处理a=2的特判
printf("%lld",n*ans/2);
}