数学知识——欧拉函数

数学知识(二)
20240628

  1. 求和N互质的个数公式 先分解N,再求个数fai n
  2. 欧拉函数的证明:用容斥原理 不考
    求质因子 p1, … , pk
    1-N中与N互质的个数, 去掉质因子倍数 是pi的倍数的有N/pi个,但是会有既是p1也是p2…的倍数,那么会重复减,要再加回来(这是高数讲过的)
    个数=N-是一个pi的倍数 + 是两个的pi,pj的倍数- 是三个的pi,pj, pk的倍数+….类推
    奇减偶加

时间复杂度 O(根号n) 主要是分解质因子耗时,所以是根号n
所以是n*根号ai, 大概4-5百万之间!!!

873 欧拉函数

	#include<iostream>
	#include<algorithm>
	
	using namespace std;
	
	int main(){
	    // 分解质因数
	    int n;
	    cin >> n;
	    while(n --){
	        int a;
	        cin >> a;
	        
	        int res = a; //质因数个数
	        
	        for(int i = 2; i <= a/i; i ++){
	            if(a % i == 0){
	                // res = res *(1- 1 / i); //不能有小数  要先除i
	                res = res / i *(i -1);
	                
	                while(a % i ==0) a /= i;
	            }
	        }
	        
	        // a只有一个最大的质因子他自己
	        if(a > 1) res = res/ a * (a -1);
	        cout << res << endl;
	    }
	    
	    return 0;
	}

874 用筛法求欧拉函数
20:49
求每个质因数的欧拉函数
用On,变快!

一个质数p的欧拉函数(1-p里和p互质的数的个数!)就是p-1

原始

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;
const int N =1000010;

int primes[N], cnt;  //cnt 质数的下标??
int phi[N]; //欧拉函数
bool st[N]; //已被晒过了嘛

// 能爆int 用longlong
LL get_eulers(int n){
    // 线性筛法
    for(int i = 2; i <= n; i ++){
        if(!st[i]){
            // i没被筛过,是个质数
            primes[cnt ++] = i;
        }
        
        // 枚举所有质数,把质数的倍数都删了 标记为筛过
      

一个质数p的欧拉函数(1-p里和p互质的数的个数!)就是p-1 

  for(int j = 0; primes[j] <= n/i; j ++){
            st[primes[j] * i ] = true;
            if(i % primes == 0) break;
        }
    }
}

int main(){
    int n;
    cin >> n;
    
    cout << get_eulers(n) << endl;
    
    return 0;
}

优化
1. 一个质数p的欧拉函数(1-p里和p互质的数的个数!)就是p-1 Phi[i] = I -1
2. I mod pj =0 则pj是i的质因子,
那么phi[pj*i] 的欧拉函数 互质个数= ?

因为欧拉函数和pk的次数ak无关,只和pk 有关,出现一个pk,多乘1-1/pk

推出pj是i质因子,那么 phi[i] 已经乘过 1- 1/pj
那么pj *i的质因子 是1-1/pj不影响,与pj的次数无关!!!!

Phi[pj*i] = pj * phi[i]
当I mod pj =0

当I mod pj !=0
pj一定不是i的质因子,而且是pj i 的最小质因子
多1-1/pj 和pj
Phi[pj
i] = pj (1-1/j)* phi[i] = (pj -1) & phi[i]

就是比线性筛模板多了黄色的部分 三种情况

	#include<iostream>
	#include<algorithm>
	
	using namespace std;
	
	typedef long long LL;
	const int N =1000010;
	
	int primes[N], cnt;  //cnt 质数的下标??
	int phi[N]; //欧拉函数
	bool st[N]; //已被晒过了嘛
	
	// 能爆int 用longlong
	LL get_eulers(int n)
	{
	    phi[1] = 1; //特殊
	    
	    // 线性筛法
	    for(int i = 2; i <= n; i ++){
	        if(!st[i]){
	            // 优化了这里
	            phi[i] = i - 1;
	            
	            // i没被筛过,是个质数
	            primes[cnt ++] = i;
	        }
	        
	        // 枚举所有质数,把质数的倍数都删了 标记为筛过
	        for(int j = 0; primes[j] <= n/i; j ++){
	            st[primes[j] * i ] = true;
	            if(i % primes[j] == 0) 
	            {   
	                phi[primes[j] * i] = phi[i] * primes[j];
	                break;
	            }
	            
	            phi[primes[j] *i] = phi[i] * (primes[j] -1);
	        }
	    }
	    
	    LL res = 0;
	    for(int i = 1; i <= n; i++){
	        res += phi[i];
	    }
	    return res;
	}
	
	int main(){
	    int n;
	    cin >> n;
	    
	    cout << get_eulers(n) << endl;
	    
	    return 0;
	}

36;34 欧拉定理 反正不考证明的,不用看
三 是恒等于

If a与n互质,那么a^phi[n] mod n 恒为1
推论:欧拉定理等价版本
当p质数,if a与p互质
a^phi( p) mod p = 1
则phi( p) = p-1

证明不用看 跳了

费马小定理,高数下
设1-n中所有与a互质的数是 两两不相同
a1, …. , a_phi(n)
因为a与n互质
So
aa1, … , a a_phi(n)两两不相同,而且与n互质
Why 两两不相同 反证法
假设存在两个相同的
aai 三 aaj
a*(ai -aj) 三 0 mod n
因为a不为0, 所以ai 恒等于aj矛盾了

所以
[ a1, …. , a_phi(n) ] mod n
[aa1, … , a a_phi(n) ] mod n是同一组数,只不过顺序不同

所以 a^phi n mod n三 1
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/761591.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机人说学校-南京大学-计算机方向

1. 专长、特点与特色 南京大学计算机专业在国内外享有很高的声誉&#xff0c;其专长、特点和特色主要体现在以下几个方面&#xff1a; 理论性强&#xff1a;重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础。实践性强&am…

大厂10余年经验总结,用户研究领域入门标准书籍来了!

《用户研究方法&#xff1a;卓越产品和服务的用户研究技巧》一书近期出版&#xff0c;本书是用户研究领域入门标准书籍&#xff0c;是一本带你进入用户研究世界&#xff0c;通过研究用户让您工作更出色的书籍。 内容及特色 本书共 10 章&#xff0c;分为三篇。 第一篇&#xf…

Qt实现手动切换多种布局

引言 之前写了一个手动切换多个布局的程序&#xff0c;下面来记录一下。 程序运行效果如下&#xff1a; 示例 需求 通过点击程序界面上不同的布局按钮&#xff0c;使主工作区呈现出不同的页面布局&#xff0c;多个布局之间可以通过点击不同布局按钮切换。支持的最多的窗口…

鸿蒙应用更新跳转到应用市场

鸿蒙没有应用下载安装&#xff0c;只支持跳转到应用市场更新 gotoMarket(){try {const request: Want {parameters: {// 此处填入要加载的应用包名&#xff0c;例如&#xff1a; bundleName: "com.huawei.hmsapp.appgallery"bundleName: com.huawei.hmos.maps.app}}…

昇思25天学习打卡营第8天|模型训练

昇思25天学习打卡营第8天|模型训练 前言模型训练构建数据集定义神经网络模型定义超参、损失函数和优化器超参损失函数优化器 训练与评估 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型平台和CSDN邀请体验昇思大模型&#xff01;从…

PFA滴定管带阀门耐酸碱本底值低

一、产品介绍 酸式滴定管为一细长的管状容器&#xff0c;一端具有活栓开关用来控制滴定的速度&#xff0c;其上具有刻度指示量度&#xff0c;是分析化学中常用的滴定仪器。可用于进行酸碱中和滴定试验等&#xff0c;量取对橡皮有侵蚀作用的液体。 我司生产的PFA酸式滴定管是用…

全球3DMAX插件界又更新了什么?

“3DMAX插件界”不这样称呼又叫他们什么呢&#xff1f;顾名思义就是开发3dmax插件的那个圈子。现在的3D类软件越来越多&#xff0c;但是&#xff0c;3dmax的地位仍然举足轻重。3dmax软件之所以受欢迎&#xff0c;不仅仅是因为自身的功能强大&#xff0c;还有其良好的可扩展性&a…

哪个麦克风音质好,麦克风哪种好,2024年热门家用麦克风推荐

​在这个信息爆炸的时代&#xff0c;网络直播和短视频成为了人们获取信息、娱乐和社交的重要方式。作为自媒体人&#xff0c;拥有一款优秀的领夹式无线麦克风是必不可少的。它不仅能够帮助你在各种环境中保持清晰的声音&#xff0c;还能提升你的作品质量和专业度。然而&#xf…

Parade接口芯片选型和应用,点击查看!

01 常见数据 / 媒体接口电路 接口电路是电子设备之间&#xff0c;电子设备与外围设备之间&#xff0c;电子设备内部部件之间起连接作用的逻辑电路&#xff0c;接口电路是设备处理器与外部设备进行信息交互的桥梁。 图1&#xff1a;常见高速数据/多媒体接口 1.1 USB接口 从最早…

思维模型:看透本质的思维框架,和它组合个个是王炸(非常详细)零基础入门到精通, 收藏这一篇就够了

为什么要从「为什么」开始&#xff1f; 如何想到又做到&#xff0c;提高行动力&#xff1f; 知行合一的途径&#xff1f;有用的工具&#xff1f; 剧透一下&#xff0c;读完本篇&#xff0c;你会收获一些王炸组合。 01 黄金思维圈 Why→How→What 黄金思维圈是西蒙斯涅克…

算法类学习笔记 ———— 车道线检测

文章目录 介绍基于传统计算机视觉地车道线检测基于道路特征的检测方法基于颜色特征的检测方法基于灰度特征的检测方法 基于彩色特征的检测方法基于纹理特征的检测方法基于多特征融合的检测方法 基于道路模型地检测方法直线模型曲线模型 基于深度学习的车道线检测LaneNet H-Net…

windows离线安装显卡驱动解决方案

前言 我们说这个离线泛指计算机无公网环境&#xff0c;而我们需要将显卡驱动打上&#xff0c;既然没有公网&#xff0c;我们就无法使用联网的方式&#xff08;傻瓜式安装&#xff09;&#xff0c;受各种原因限制&#xff0c;也不可以把主机搬走连上互联网进行安装。总之…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-38实战Kaggle比赛:图像分类 (CIFAR-10)

38实战Kaggle比赛&#xff1a;图像分类 (CIFAR-10) 比赛链接&#xff1a;CIFAR-10 - Object Recognition in Images | Kaggle 导入包 import os import glob import pandas as pd import numpy as np import torch import torchvision from torch.utils.data import Dataset…

Mac多线程下载管理器:Neat Download Manage 最新版

Neat Download Manager&#xff08;NDM&#xff09;是一款功能强大的下载管理软件&#xff0c;它可以帮助用户更有效地管理和下载网络资源。这款软件支持多种浏览器和协议&#xff0c;可以提升下载速度&#xff0c;恢复中断的下载任务&#xff0c;以及自动化下载过程。在使用任…

如何学好AI绘画?点这里有答案!

前言 地狱难度的求职模式下&#xff0c;“掌握一门技术”的那部分求职者&#xff0c;远比其他人更有竞争力&#xff1b;而拥有出色技术和技能的设计师、以及未来想做设计师的小伙伴们&#xff0c;怎么才能更好实现工作自由&#xff1f; 只有两个字&#xff1a;学习。 学习新…

【Go】excelize库实现excel导入导出封装(四),导出时自定义某一列或多列的单元格样式

大家好&#xff0c;这里是符华~ 查看前三篇&#xff1a; 【Go】excelize库实现excel导入导出封装&#xff08;一&#xff09;&#xff0c;自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头 【Go】excelize库实现excel导入导出封装&#xff08;二&…

uniapp运行到小程序Vue.use注册全局组件不起作用

真想吐槽一下小程序&#xff0c;uniapp运行到小程序使用Vue.use注册全局组件根本不起作用&#xff0c;也不报错&#xff0c;这只是其中一个问题&#xff0c;其他还有很多问题&#xff0c;比如vue中正常使用的没问题的语法&#xff0c;运行到小程序就不行&#xff0c;又是包太大…

第一后裔延迟高怎么办?快速降低第一后裔延迟

第一后裔/The First Descendant一款射击游戏&#xff0c;融合了刷宝、角色扮演、团队合作、剧情等元素&#xff0c;让每个玩家都能在自己的角度上&#xff0c;找到切入点&#xff0c;并不断地成长&#xff0c;一步步解开后裔身上隐藏的秘密。近期该作正式上线&#xff0c;很多玩…

如何选择适合您业务需求的多语言跨境电商系统源码

随着互联网技术的飞速发展和全球市场的日益融合&#xff0c;多语言跨境电商已经成为许多企业进军国际市场的重要战略。在这个竞争激烈的时代&#xff0c;拥有一个适合自己业务需求的多语言跨境电商系统源码至关重要。本篇文章将为您揭秘如何选择适合您业务需求的多语言跨境电商…

接口自动化测试-项目实战

什么是接口自动化测试&#xff1a;使用工具或代码代替人对接口进行测试 测试项目结构&#xff08;python包&#xff09; 1、接口api包 2、script:业务脚本 3、data:数据 4、config.py :配置文件 5、reporter:报告 错误问题&#xff1a; 1、未打印任何东西。添加pip ins…