首页 > 学院 > 开发设计 > 正文

[HDU]3501 Calculation 2 [欧拉函数之求和]

2019-11-08 03:04:54
字体:
来源:转载
供稿:网友

PRoblem Description Given a positive integer N, your task is to calculate the sum of the positive integers less than N which are not coprime to N. A is said to be coprime to B if A, B share no common positive divisors except 1.

Input For each test case, there is a line containing a positive integer N(1 ≤ N ≤ 1000000000). A line containing a single 0 follows the last test case.

Output For each test case, you should print the sum module 1000000007 in a line.

Sample Input 3 4 0

Sample Output 0 2

解题报告

∑gcd(i,n)=1i<ni=n⋅φ(n)/2

#include<stdio.h>typedef __int64 LL;LL E(LL n){ LL res=1; for(LL i=2;i*i<=n;i++) if(n%i==0){ res*=i-1; n/=i; while(n%i==0) res*=i,n/=i; } if(n>1) res*=n-1; return res;}int main(){ LL n; while(~scanf("%lld",&n)&&n){ LL ans=(n-1)*n/2-n*E(n)/2; printf("%lld/n",ans%1000000007); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表