.欧拉函数.

先介绍欧拉函数:
贴一张

证明:

这里利用容斥原理来进行证明:若要求1~N当中与N互质的个数,则应在1~N当中去除N的质因数的倍数,因为既然是因数,那么一定不与N互质,既然是N的因数,那么一定是N的质因数的倍数。对于上述公式里的质因数pi来说,在1~N上pi倍数的个数即为N/pi
那么1~N中与N互质的个数即为:N-N/p1-N/p2-......-N/pi。但是会有质因数的倍数被重复去除,例如6即使质因数2的倍数,也是质因数3 的倍数,那么6就会先被2去除,再被3去除。如下图:

浅蓝色的区域表示被去除两次,那么我们需要将其加回来则上述变为:N-N/p1-N/p2-......-N/pi+N/(p1*p2)+N/(p2*p3)+N/(p1*p3)+......+N/(pi*pj)。

这个时候问题来了深色的区域又被加了三次,那么则需要将其减去,同样的如果是多个质因数的倍数被多次减去,那么就会重复上面的错误
那么1~N中与N互质的个数即为:N-N/p1-N/p2-......+N/(p1*p2)+N/(p2*p3)+...-N/(p1*p2*p3)-......+1/(p1*p2*p3*p4)+.....
而这个推导的公式就等于
证毕。

 理解了上述证明公式,那么求解相关问题就会非常简单

题目:873. 欧拉函数 - AcWing题库

代码:

#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

const int N=105;
int n,res[N];

void get_primes(int u)
{
    int cnt=0;
    //试除法求约数
    for(int i=2;i<=u/i;i++)
    {
        while(u%i==0)
        {
            u/=i;
            res[cnt]=i;
            cnt++;
            //以免多次储存。譬如8=2^3,如果不去重则会有:res[0]=2,res[1]=2,res[2]=2;
            if(u%i==0) cnt--;
        }
    }
    
    if(u>1) res[cnt]=u;
}

void euler(int a[],int u)
{
    //记得开long long
    int ans=u;
    for(int i=0;a[i]!=0;i++)
    {
//欧拉公式
        ans=ans/a[i]*(a[i]-1);
    }
    cout << ans << endl;
}

int main()
{
    cin >> n;
    for(int i=0;i<n;i++)
    {
        int x;
        cin >> x;
        get_primes(x);
        euler(res,x);
        //每次计算完成一个数,就将res重置,以免与后续冲突
        memset(res,0,sizeof res);
    }
    
    return 0;
}

 题目:874. 筛法求欧拉函数 - AcWing题库

 本题牵涉到两个公式的证明,在代码后会给出。和前面所学的线性筛,请及时回顾

代码:

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

const int N=1e6+10;
int n,phi[N],primes[N],res;
bool st[N];

void get_eulers(int u)
{
//1特殊处理,当N等于1时,与1互质的个数为1
    phi[1]=1;
    for(int i=2;i<=u;i++)
    {
        if(!st[i])
        {
            primes[res++]=i;
//当数x是质数时,那么与x在1~x互质的个数为x-1,譬如2,3,5,7...
            phi[i]=i-1;
        }
        
        for(int j=0;primes[j] <= u/i;j++)
        {
//线性筛,筛去质数的倍数
            st[primes[j]*i]=true;
//公式一与公式二都是对被筛去的数 求欧拉数
            if(i%primes[j]==0)
            {
                phi[i*primes[j]]=primes[j]*phi[i];//公式一
                break;
            }

            phi[i*primes[j]]=(primes[j]-1)*phi[i];//公式二
        }
    }
    long long cnt=0;
    for(int i=1;i<=u;i++) cnt+=phi[i];
    cout << cnt;
}
int main()
{
    cin >> n;
    
    get_eulers(n);
    
    return 0;
}

 公式一,若i%primes[j]==0,则有phi[i*primes[j]]=primes[j]*phi[i];这个因果关系的含义即为:
如果一个数x是N的质因数y的倍数,那么x*y的欧拉函数就为x*(y的欧拉函数)
证明:因为x%y==0,所以y是x的一个因数,又因为y是N的一个质因数(在筛质数的过程中是以质因数来筛的),那么y是x的质因数。根据算术基本定理 在这里,我们假设x=
 

公式二:

 欧拉定理

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

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

相关文章

中职网络安全B模块渗透测试system0016

访问http://靶机IP/web1/,获取flag值&#xff0c;Flag格式为flag{xxx}&#xff1b; 可能会跳转8000端口删除进入80端口 进入后点击侦查一下&#xff0c;这里乱码了&#xff0c;我们点击查看是一个柯南&#xff0c;web但这是一个web题目肯定不是隐写术&#xff0c;所以说题目的…

【鸿蒙学习笔记】位置设置・direction・子元素排序

官方文档&#xff1a;位置设置 目录标题 direction&#xff1a; direction&#xff1a; Row() {Text(1).height(50).width(25%).fontSize(16).backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)Text(2).height(50).width(25%).fontSize(16).backgroundColor(0xD2B48C).…

Graph RAG——从局部到全局实现高效查询摘要(QFS)

From Local to Global: A Graph RAG Approach to Query-Focused Summarization https://arxiv.org/abs/2404.16130https://arxiv.org/abs/2404.16130 1.概述 在现代信息处理技术的广袤领域中,检索增强生成(RAG)技术已成为从外部知识源检索相关信息的重要工具,使得大型语言…

【 C++ 】详解 (类和对象) 继承

继承的概念及定义 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象 程序设计的层次结构…

Run LoongArch64 Alpine VM on x86_64

一、Build from source(build on x86_64) Obtain the latest libvirt, virt-manager, and qemu source code, compile and install them. 1.1 Build libvirt from source sudo apt-get update sudo apt-get install augeas-tools bash-completion debhelper-compat dh-apparm…

Hi3861 OpenHarmony嵌入式应用入门--HTTPD

httpd 是 Apache HTTP Server 的守护进程名称&#xff0c;Apache HTTP Server 是一种广泛使用的开源网页服务器软件。 本项目是从LwIP中抽取的HTTP服务器代码&#xff1b; Hi3861 SDK中已经包含了一份预编译的lwip&#xff0c;但没有开启HTTP服务器功能&#xff08;静态库无法…

visual studio开发C++项目遇到的坑

文章目录 1.安装的时候&#xff0c;顺手安装了C模板&#xff0c;导致新建项目执行出问题2.生成的exe&#xff0c;打开闪退问题3.项目里宏的路径不对&#xff0c;导致后面编译没有输出4. vs编译ui&#xff0c;warning跳过&#xff0c;未成功5.vs编译.h&#xff0c;warning跳过&a…

javaweb学习day5--《HTML篇》Springboot的模块创建、HTML的相关知识点详解

一、前言 从今天开始&#xff0c;就要启动后端的学习了&#xff0c;Springboot会贯穿到底&#xff0c;一定要跟着小编严谨的去搭建Springboot环境&#xff0c;依赖添加的过程可能需要2分钟左右&#xff0c;读者们要耐心等待一下&#xff0c;搭建好Springboot之后才算正式的开始…

Unity3D 转换微信小游戏指引 03 微信SDK

Unity3D 转换微信小游戏指引系列&#xff08;第三期&#xff09; 微信SDK 初始化 首先&#xff0c;进行 SDK 初始化&#xff0c;需要引用命名空间 using WeChatWASM&#xff0c;调用 WX.InitSDK&#xff0c;在回调函数中进行游戏主逻辑的初始化。 using System.Collections…

0708,LINUX目录相关操作 + LINUX全导图

主要是冷气太足感冒了&#xff0c;加上少吃药抗药性差&#xff0c;全天昏迷&#xff0c;学傻了学傻了 01&#xff1a;简介 02&#xff1a; VIM编辑器 04&#xff1a;目录 05&#xff1a;文件 03&#xff1a;常用命令 06&#xff1a;进程 07&#xff1a;进程间的通信 cat t_c…

Keil出现警告:warning: #223-D: function “XXX“ declared implicitly

1、警告 \SYSTEMwarning: #223-D: function “FLASH_SetLatency” declared implicitly 2、原因 文件涉及调用stm32f10x_flash.h里的函数&#xff0c;但文件没有包含stm32f10x_flash.h 3、解决 1、点击魔法棒-》c/c》include paths-》包含头文件所在路径 2、直接在报错的文…

LeetCode 441, 57, 79

目录 441. 排列硬币题目链接标签思路代码 57. 插入区间题目链接标签思路两个区间的情况对每个区间的处理最终的处理 代码 79. 单词搜索题目链接标签原理思路代码 优化思路代码 441. 排列硬币 题目链接 441. 排列硬币 标签 数学 二分查找 思路 由于本题所返回的 答案在区间…

Qt中https的使用,报错TLS initialization failed和不能打开ssl.lib问题解决

前言 在现代应用程序中&#xff0c;安全地传输数据变得越来越重要。Qt提供了一套完整的网络API来支持HTTP和HTTPS通信。然而&#xff0c;在实际开发过程中&#xff0c;开发者可能会遇到SSL相关的错误&#xff0c;例如“TLS initialization failed”&#xff0c;cantt open ssl…

春招冲刺百题计划|双指针

Java基础复习 Java数组的声明与初始化Java ArrayListJava HashMapJava String 类Java LinkedListJava Deque继承LinkedListJava SetJava 队列优先队列:第二题用到了Java数组划分Java数组转ArrayListString 转数字String 这一部分&#xff0c;代码随想录写得超级好&#xff01…

LabVIEW阀门运动PCT测试

开发了一套基于LabVIEW的阀门运动PCT&#xff08;Pressure-Composition-Temperature&#xff09;测试方法。该系统通过控制阀门运动&#xff0c;实现对氢气吸附和解吸过程的精确测量和控制。所用硬件包括NI cDAQ-9174数据采集模块、Omega PX309压力传感器、SMC ITV2030电动调节…

【java算法专场】滑动窗口(下)

目录 水果成篮 算法分析 算法步骤 示例 算法代码 找到字符串中所有字母异位词 算法分析 算法步骤 示例 算法代码 优化 算法代码 串联所有单词的子串 算法分析 算法步骤 示例 算法代码 最小覆盖子串 算法分析 算法步骤 示例 算法代码 算法分析 这道题其实…

Python数据分析案例52——基于SSA-LSTM的风速预测(麻雀优化)

案例背景 又要开始更新时间序列水论文的系列的方法了&#xff0c;前面基于各种不同神经网络层&#xff0c;还有注意力机制做了一些缝合模型。 其实论文里面用的多的可能是优化算法和模态分解&#xff0c;这两个我还没出专门的例子&#xff0c;这几天正好出一个优化算法的例子来…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等&#xff0c;会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求&#xff0c;我们需要进行数据采集&#xff0c;将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发&#xff0c;需要修改…

树莓派pico入坑笔记,esp01/01s使用

目录 关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树莓派pico专栏 说明 关于at指令 WiFi的at指令 UDP的at指令 样例程序 调试助手端输入指令 sta端程序 效果 进阶使用 库函数说明 样例代码 关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树…