hdu3501 Calculation 2 欧拉函数
来源:互联网 发布:伯爵表 知乎 编辑:程序博客网 时间:2024/05/18 09:00
//求小于n且和n不互质的所有数之和
//若gcd(n , i) == 1 那么 gcd(n , n-i) == 1
//可以用反证法
//设gcd(n , n-i) != 1;
//那么可以有 n = k1*a
//n - i = k2*a ;
//i = (k1-k2)*a
//gcd(n ,i) != 1
//那么 ans = n*(n-1)/2 - n*euler(n)/2
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
typedef __int64 ll ;
const int mod = 1000000007 ;
ll Euler(ll n)
{
ll res = n ;
for(ll i = 2;i*i <= n;i++)
{
if(n%i == 0)
res -= res/i ;
while(n%i == 0)
n/=i ;
}
if(n > 1)res -= res/n ;
return res ;
}
int main()
{
ll n ;
while(scanf("%I64d" , &n) && n)
{
ll sum = Euler(n) ;
//cout<<sum<<endl;
ll ans = (((n)*(n-1)/2) - n*sum/2)%mod ;
printf("%I64d\n" , ans) ;
}
return 0 ;
}
//若gcd(n , i) == 1 那么 gcd(n , n-i) == 1
//可以用反证法
//设gcd(n , n-i) != 1;
//那么可以有 n = k1*a
//n - i = k2*a ;
//i = (k1-k2)*a
//gcd(n ,i) != 1
//那么 ans = n*(n-1)/2 - n*euler(n)/2
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
typedef __int64 ll ;
const int mod = 1000000007 ;
ll Euler(ll n)
{
ll res = n ;
for(ll i = 2;i*i <= n;i++)
{
if(n%i == 0)
res -= res/i ;
while(n%i == 0)
n/=i ;
}
if(n > 1)res -= res/n ;
return res ;
}
int main()
{
ll n ;
while(scanf("%I64d" , &n) && n)
{
ll sum = Euler(n) ;
//cout<<sum<<endl;
ll ans = (((n)*(n-1)/2) - n*sum/2)%mod ;
printf("%I64d\n" , ans) ;
}
return 0 ;
}
0 0
- hdu3501 Calculation 2 欧拉函数
- HDU3501 Calculation 2(欧拉函数推广)
- HDU3501 Calculation 2 【欧拉函数】
- hdu3501 Calculation 2 欧拉函数
- 欧拉函数 hdu3501 Calculation 2
- 欧拉函数之HDU3501 Calculation 2
- hdu3501 Calculation 2(欧拉函数)
- 欧拉函数:HDU3501-Calculation 2
- hdu3501-Calculation 2
- hdu3501-Calculation 2
- hdu3501 Calculation 2
- hdu3501(欧拉函数水)
- Calculation 2 欧拉函数的应用
- hdu-Calculation 2(欧拉函数)
- 【欧拉函数】 HDOJ 3501 Calculation 2
- hdoj 3501 Calculation 2 【欧拉函数】
- hdoj 3501 Calculation 2(欧拉函数)
- HDU 3501-Calculation 2(欧拉函数)
- 基于XML配置文件的事务管理
- Hash函数经典用法
- Description of COM principle
- PHP读取CURL模拟登录时生成Cookie文件
- PHP Pthread多线程 操作
- hdu3501 Calculation 2 欧拉函数
- poj1006
- 郁闷的 linux error: 13: Permission denied 引发Linux中的文件权限详解
- iOS - 中三种定时器的用法NSTimer、CADisplayLink、GCD
- 算法入门2(c语言)
- 题目1368:二叉树中和为某一值的路径
- 微信公众平台开发入门教程
- hdu1829 A Bug's Life
- 不要在init和dealloc函数中使用accessor(访问器)