HDU 1787 GCD Again
2024-09-10 17:54:17
题目大意:求小于n的gcd(i,n)大于1的个数;
题解:欧拉函数直接求gcd(i,n)==1的个数 用n减即可
#include <cstdio>
int eular(int n){
int ret=1,i;
for(i=2;i*i<=n;i++)
if(n%i==0){
n/=i,ret*=i-1;
while(n%i==0)n/=i,ret*=i;
}
if(n>1) ret*=n-1;
return ret;
}
int main(){
int n;
while(scanf("%d",&n),n!=0)printf("%d\n",n-eular(n)-1);
return 0;
}
最新文章
- Linux学习 :移植U-boot_2016.09到JZ2440开发板
- HackerRank ";Angry Children 2";
- javascript “||”、“&;&;”的灵活运用
- Tomcat8.5
- Oracle alter index rebuild 与 ORA-08104 说明
- 称球问题(zt)
- Oracle系列之表空间
- BZOJ 1024 SCOI 2009 生日快乐 深搜
- Windows Phone开发(35):使用Express Blend绘图
- 基于arm开发板四个按键控制四个灯亮
- 【HTML】ie=edge(转)
- 初识Djiango
- 几个bat文件(关于robot freamwork安装)
- sharding sphere 分表分库 读写分离
- IIS中注册.net4.0
- mongodb集群配置及备份恢复
- PTA编程总结3—抓老鼠啊~亏了还是赚了?
- Excel函数之sumifs应用
- python基础之Day9
- 给PHP开启shmop扩展实现共享内存