hdoj Calculation 2 3501 (欧拉函数)
2015-11-06 19:58
381 查看
Calculation 2
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3141 Accepted Submission(s): 1300
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
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.
[align=left]Output[/align]
For each test case, you should print the sum module 1000000007 in a line.
[align=left]Sample Input[/align]
3
4
0
[align=left]Sample Output[/align]
0
2//题意:求小于且不与n互质的数之和。用欧拉函数先求出与n互质的数之和,再用总和减去就行了。Hint: 欧拉函数求得的与n互质的值为n*ephi(n)/2;
#include<stdio.h> #include<string.h> #include<math.h> #define M 1000000007 long long ephi(long long n) { int m=(int)sqrt(n+0.5); long long ans=n; for(int i=2;i<=m;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() { long long n; while(scanf("%lld",&n),n) { long long ans=((n*(n-1)/2)-((n*ephi(n)/2)))%M; printf("%lld\n",ans); } return 0; }
相关文章推荐
- 使用openweathermap API 报错
- android-2048游戏
- 机器学习之模型评估与模型选择
- nyoj 523 亡命逃窜 【三维bfs】
- [leetcode 88]Merge Sorted Array
- 水生火热的互联网金融
- 内核编译时, 到底用make clean, make mrproper还是make distclean
- sudo执行脚本找不到环境变量
- 变量命名
- package com.haha.单例;
- iOS-----获取当前app的名称和版本号
- LAMP环境的搭建
- Chapter07 包和引入
- excel排版转换为印刷版pdf:使用自动行号还是人工设定行高
- JAVA实现对SQLServer增,删,改,查
- 函数库:静态库和动态库
- 汇编语言 大小比较 理解 ja jna jg jle
- 语言or方向,读研or工作
- 20151106 SMON PMON DBWR
- Fluery算法