hdoj-1286-找新朋友
来源:互联网 发布:蒙泰软件官方网站 编辑:程序博客网 时间:2024/06/08 16:29
找新朋友
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8514 Accepted Submission(s): 4476
Problem Description
新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
Input
第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数。
Output
对于每一个N,输出一行新朋友的人数,这样共有CN行输出。
Sample Input
22560824027
Sample Output
768016016欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。
通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。
对于质数p,φ(p) = p - 1。注意φ(1)=1.
欧拉定理:对于互质的正整数a和n,有aφ(n) ≡ 1 mod n。
欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。
若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。
特殊性质:当n为奇数时,φ(2n)=φ(n)
欧拉函数还有这样的性质:
设a为N的质因数,若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)。
#include<stdio.h>int oula(int n){int i,sum=n;for(i=2;i<=n;i++)if(n%i==0){sum-=sum/i;while(n%i==0){n/=i;}}return sum;}int main(){int s,n;scanf("%d",&s);while(s--){scanf("%d",&n);printf("%d\n",oula(n));}return 0;}
0 0
- HDOJ 1286 找新朋友
- hdoj 1286 找新朋友
- hdoj 1286 找新朋友
- hdoj-1286-找新朋友
- hdoj 1286找新朋友
- hdoj 1286 找新朋友
- hdoj 1286 找新朋友
- HDOJ 1286 找新朋友
- HDOJ 1286找新朋友
- hdoj-【1286 找新朋友】
- hdoj找新朋友
- hdoj 1286 找新朋友【水】
- hdoj.1286 找新朋友 20140724
- hdoj 1286 找新朋友(求欧拉函数)
- HDOJ 题目1286找新朋友(打表,水题)
- hdoj 1286 找新朋友 【数论之欧拉函数】
- hdoj 1286 找新朋友(欧拉函数)
- HDOJ 1286 找新朋友(欧拉函数)
- GOF23设计模式之享元模式之理解
- java基础8:GUI
- linux 定时任务
- mvc UIViewController 设备旋转
- 【Python与R】Rpy2 - 安装
- hdoj-1286-找新朋友
- 推荐系统之协同过滤概述
- STM32 RTC卡死在RTC_WaitForLastTask()解决方法
- 历届试题 小朋友排队(树状数组求逆序数)
- HDU 3998 Sequence(最大流+最长上升子序列)
- 正则表达式小总结
- 图文混排
- Ubuntu1404设置静态ip
- 个人的关键作用——首领