博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3501 Calculation 2------欧拉函数变形
阅读量:6540 次
发布时间:2019-06-24

本文共 1452 字,大约阅读时间需要 4 分钟。

Calculation 2

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1750    Accepted Submission(s): 727

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
1 /* 2 欧拉函数一个小小的性质: 3  4 求小于n并且与n互质的数的和为:n*phi[n]/2; 5  6 这个好像以前有点印象的。 7  8 */ 9 10 #include
11 12 13 __int64 Euler(__int64 n)14 {15 __int64 temp=n,i;16 for(i=2;i*i<=n;i++)17 {18 if(n%i==0)19 {20 while(n%i==0)21 n=n/i;22 temp=temp/i*(i-1);23 }24 }25 if(n!=1) temp=temp/n*(n-1);26 return temp;27 }28 29 int main()30 {31 __int64 n,m;32 __int64 k;33 while(scanf("%I64d",&n)>0)34 {35 if(n==0)break;36 m=Euler(n);37 k=m*n/2;38 k=n*(n+1)/2-n-k;39 //刚开始,只有k为__in64,错了。40 //这里相乘之后,可能会超过int范围。倒置溢出41 k=k%1000000007;42 printf("%I64d\n",k);43 }44 return 0;45 }

 

 

转载于:https://www.cnblogs.com/tom987690183/p/3243787.html

你可能感兴趣的文章
spring cloud微服务分布式云架构--hystrix的使用
查看>>
linux tail
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
jquery的$().each,$.each的区别
查看>>
自己写的进度条###
查看>>
windows磁盘扩容(动态磁盘)
查看>>
在jsp页面中添加富文本编译器(ueditor)+ 图片上传功能
查看>>
fedora12下安装oracle11客户端
查看>>
实现批量添加20个用户,用户名为user1-50,密码为user后面跟5个随机字符
查看>>
LVM磁盘管理
查看>>
Net命令详解
查看>>
CentOS linux 高可用集群之heartbeat
查看>>
用bat更改hosts文件批处理
查看>>
Logwatch日志分析工具
查看>>
docker 基本操作Ⅱ(关于镜像操作)
查看>>
分工與合作
查看>>
轻松设置站点对ASP危险组件的调用权限
查看>>
看懂“拜占庭容错”,也就看懂了区块链的核心技术
查看>>
APMServ 5.2.6 Win7 Apache启动失败,请检查相关配置
查看>>
了解痘痘起因才能彻底告别痘痘烦恼
查看>>