欧拉函数的作用:

有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数。欧拉函数描述了一些列与这个f(n)有关的一些性质,如下:

1、令p为一个素数,n = p ^ k,则   f(n) = p ^ k - p ^ (k-1)

2、令m,n互质,则   f(m*n) = f(m) * f(n)

3、如果n为奇数,则    f(2 * n) = f(n)

下面给出一个例题的代码,例题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <algorithm>
 5 #include <vector>
 6 #include <string>
 7 #include <cmath>
 8 using namespace std;
 9 const int maxn = 32769;
10
11 int ans[maxn],prim[4000],flag_p[maxn];
12 /*
13 把1~maxn所有的素数打出来
14 */
15 int SolPrim()
16 {
17     memset(flag_p,0,sizeof(flag_p));
18     for(int i = 2;i < sqrt((double)maxn);++i)
19         for(int j = i * i;j < maxn;j += i)
20             flag_p[j] = 1;
21     int  f = 0;
22     for(int i = 2;i < maxn;++i)
23         if(!flag_p[i])
24             prim[f++] = i;
25 }
26 /*
27 打表,把结果全部打出来
28 */
29 void PreSol()
30 {
31     int f = SolPrim();
32     memset(ans,0,sizeof(ans));
33     for(int i = 1;i < 32768;++i)
34     {
35         int temp = 1,t = i;
36         for(int j = 0;prim[j] <= i;++j)
37         {
38             int tt =  0;
39             while(t % prim[j] == 0)
40             {
41                 t /= prim[j];
42                 tt++;
43             }
44             if(tt) temp *= (pow(prim[j],tt-1) * (prim[j] - 1));
45         }
46         ans[i] = temp;
47     }
48 }
49
50 int main()
51 {
52     PreSol();
53     int T,n;
54     scanf("%d",&T);
55     while(T--)
56     {
57         scanf("%d",&n);
58         printf("%d\n",ans[n]);
59     }
60     return 0;
61 }

View Code

转载于:https://www.cnblogs.com/xiaxiaosheng/p/4713977.html

欧拉函数 - HDU1286相关推荐

  1. HDU1286 找新朋友【欧拉函数】

    找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

  2. 【欧拉函数】 欧拉函数计算及打表

    文章目录 一.欧拉函数简介 二.欧拉函数计算 三.欧拉函数值打表 四.练手题目 一.欧拉函数简介 在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1).此函数以 ...

  3. poj2154-color-polyan次二面体+欧拉函数优化

    N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...

  4. hdu 1286( 欧拉函数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...

  5. 费马定理中值定理_数论-欧拉函数、欧拉定理

    欧拉函数 积性函数 满足 ( 互质) 定义 对于正整数 ,欧拉函数是小于等于 的所有数中与 互质的数的 个数. 欧拉函数是积性函数(这个证明不是很显然,这个链接里面有很多种证明方法) 记作: 公式 , ...

  6. poj2154(Polya+欧拉函数优化模版)

    #include <cstdio> #include <cstring> #include<iostream> using namespace std; const ...

  7. 【数学专题】约数个数与欧拉函数

    整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...

  8. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  9. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. CrackMe_001
  2. flume-hdfs 按照时间关闭并新开文件
  3. 最新OCR开源神器来了!
  4. vmware ESXI6.7 设置 Nvidia 显卡直通
  5. 计算灰度共生矩阵相关性时sigmax,y 为0的问题
  6. bat怎么获取前一天 的日期_bat脚本 得到前一天的日期
  7. 浅谈:数据结构之单链表,java代码演示单链表
  8. 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
  9. oracle用hints调优,oracle hints的那点事
  10. 改造家里的开关成为智能开关,保留原有开关控制,零火版,基础入门(一)
  11. 总结:常见的攻击服务器的手段
  12. mongoDb一对多之springboot demo
  13. tp6 thinkswoole 使用极光curl请求时报错
  14. Png图片换色的方法
  15. Android 高新面试题
  16. java中小数后加f_在 Java 中,小数默认为 ,如果要指定 类型请在小数后加 F/f 。_学小易找答案...
  17. php atlas,使用Atlas实现读写分离
  18. css实现提示信息,纯CSS 实现tooltip 内容提示信息效果
  19. Arthas(阿尔萨斯)使用教程
  20. 外企九年-我最终选择放弃

热门文章

  1. open ai gpt_您实际上想尝试的GPT-3 AI发明鸡尾酒
  2. 信用卡如何安全取现?
  3. 张洁的新书「流浪的老狗」
  4. Fedora gedit 打开txt文件乱码的解决
  5. zynq中mgtx应用_基于ZYNQ的UCOS移植(TCP通讯)
  6. 入Java_初入Java的方法
  7. 读取当前linux进程内存_(笔记)Linux上的内存分配
  8. linux thrift 安装目录,Linux下安装Thrift
  9. 能跑java的服务器_一台java服务器可以跑多少个线程?
  10. MVC是什么?(转载)