博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
欧拉函数模板
阅读量:3953 次
发布时间:2019-05-24

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

欧拉函数的定义:

在数论中,对于正整数N,少于或等于N ([1,N]),且与N互质的正整数(包括1)的个数,记作φ(n)。
φ函数的值:
φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))……(1-1/p(n)) 其中p(1),p(2)…p(n)为x的所有质因数;x是正整数; φ(1)=1(唯一和1互质的数,且小于等于1)。注意:每种质因数只有一个。

例如:

φ(10)=10×(1-1/2)×(1-1/5)=4;
φ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;
φ(49)=49×(1-1/7)=42;

欧拉函数模板

(1)直接求小于或等于n,且与n互质的个数:

int Euler(int n){    int ret=n;    for(int i=2; i<=sqrt(n); i++)        if(n%i==0)        {            ret=ret/i*(i-1);                   //先进行除法防止溢出(ret=ret*(1-1/p(i)))            while(n%i==0)                n/=i;        }    if(n>1)        ret=ret/n*(n-1);    return ret;}

(2)筛选模板:求[1,n]之间每个数的质因数的个数

#define size 1000001int euler[size];void Init(){     memset(euler,0,sizeof(euler));          euler[1]=1;     for(int i=2;i

 

转载地址:http://hpyzi.baihongyu.com/

你可能感兴趣的文章
linux的文件属性和权限学习——分析ls命令结果
查看>>
android 静音与振动
查看>>
android的wake_lock介绍
查看>>
浅析linux设备驱动的clock(时钟)的注册
查看>>
epoll_create epoll_ctl epoll_wait close epoll和select的简单比较
查看>>
学习使用epoll
查看>>
uevent分析
查看>>
OMAP3630 Linux I2C总线驱动分析
查看>>
LDD3 读书笔记之 第 5 章 并发和竞争情况
查看>>
spinlock与linux内核调度的关系
查看>>
Android 显示系统
查看>>
小议C语言中数据的存储类型
查看>>
android双屏显示的一些修改与尝试
查看>>
Android Display System --- Surface Flinger
查看>>
有webservice参与的系统的单元测试, 使用mock object (二)
查看>>
有webservice参与的系统的单元测试, 使用mock object (三)
查看>>
delayed_job 的 基本用法
查看>>
ruby , rspec中测试 module
查看>>
ruby 中的多行字符串(multiple lines of string) %Q, %w, %q
查看>>
linux 中的 photoshop/paintshop: GIMP
查看>>