首页 > 其他分享 >欧拉函数

欧拉函数

时间:2023-01-13 11:24:47浏览次数:29  
标签:phi frac 函数 times 因子 欧拉

欧拉函数是对于一个数 \(N\),在 \(1-N\) 范围内所有与 \(N\) 互质的数的个数。
欧拉函数需要通过线性筛实现:
如果 \(i\) 为素数,显然 \(\phi(i) = i - 1\)
否则考虑 \(\phi(i)\) 与 \(\phi(i\times p_j)\) 的关系:
\(\phi(i)=i {\textstyle \prod_{}^{}} (1-\frac{1}{p_k})\)
如果 \(p_j\) 是 \(i\) 的最小质因子,那么 \(i\times p_j\) 中一定有 \(i\) 一定有 \(p_j\) 这个因子,
\(\phi(i\times p_j) = i \times p_j{\textstyle \prod_{}^{}}(1-\frac{1}{p_k})=\phi(i)\times p_j\)
如果 \(p_j\) 不是 \(i\) 的最小因子那么它一定不整除 \(i\) 但是一定整除 \(i*p_j\)
\(\phi(i\times p_j) = p_j \times (1-\frac{1}{p_j})\times \phi(i)=\phi(i)\times(p_j - 1)\)
可以在筛素数的时候处理欧拉函数。

void Get_phi(int n){
	phi[1] = 1;
	a[1] = a[0] = false;
	for(int i=2;i<=n;i++){
		if(!a[i]){
			prime[++cnt] = i;
			phi[i] = i - 1;
		}
		for(int j=1;j <= cnt && i * prime[j] <= n;j++){
			a[i * prime[j]] = true;
			if(i % prime[j] == 0){
				phi[i*prime[j]] = phi[i] * prime[j];
				break;
			}
			phi[i*prime[j]] = phi[i] * (prime[j] - 1);
		}
	}
}

标签:phi,frac,函数,times,因子,欧拉
From: https://www.cnblogs.com/0x3F/p/17049042.html

相关文章

  • FPGA:逻辑函数的代数法化简
    逻辑函数的最简形式1.化简逻辑函数的意义两个电路的逻辑功能完全相同。但简化电路使用的逻辑门较少,体积小且成本低。化简的意义:根据化简后的表达式构成的逻辑电路简单,可节省......
  • 打印乘法表(自定义函数)
    #include<stdio.h>voidchengfabiao(intn)//因为这个函数我不需要它返回给主函数值,因此用void{inti=1;for(i=1;i<=n;i++){intk=1;for(k=1;k<=n;k+......
  • Kotlin 变量和函数
    编程之本:变量和函数变量Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新......
  • 读编程与类型系统笔记06_函数类型的高级应用
    1. 装饰器模式1.1. 扩展对象的行为,而不必修改对象的类1.2. 装饰的对象可以执行其原始实现没有提供的功能1.3. 优势1.3.1. 支持单一职责原则1.3.1.1. 每个类只......
  • 【Dive into Deep Learning / 动手学深度学习】第十章 - 第三节:注意力评分函数
    目录​​简介​​​​10.3.注意力评分函数​​​​10.3.1.掩蔽softmax操作​​​​10.3.2.加性注意力​​​​10.3.3.缩放点积注意力​​​​10.3.4.小结​​​​读后......
  • JS-函数
    JS第四章-函数  JS的函数function 相当于java中的一个普通方法,其中方法名是method,参数是a1,a2,a31.现在定义方法 2.方法调用  方法名(参数);3.返回值r......
  • 写一个函数来判断素数
    首先我们要判断素数就要知道什么是素数,素数就是除了数字本身和1,没有别的因数,就叫素数,也称为质数。这里我们就拿100到200之间的数来举例,素数函数名称是is-prime(),我们让这个函......
  • atomic compare_exchange_weak函数
    compare_exchange_weak/compare_exchange_strong(是著名的CAS(compareandset))。参数传入期待值与新值,通过比较当前值与期待值的情况进行区别改变。a.compare_exchange_we......
  • 写一个函数,打印出1000年到2000年之间的闰年
    首先既然要判断闰年,就要知道判断条件:(year%4==0&&year%100!=0||(year%400==0))判断条件知道之后就好办了。闰年函数标准写法为:is-leap-year,首先把这个函数怎么用写出来,我们让这个......
  • 深度学习基本部件-激活函数详解
    本文分析了激活函数对于神经网络的必要性,同时讲解了几种常见的激活函数的原理,并给出相关公式、代码和示例图。激活函数概述前言人工神经元(ArtificialNeuron),简称神经......