【可见的点——欧拉函数】

news2024/9/27 18:23:27

在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(不包括1)

题目

在这里插入图片描述

思路

  • 有三个点比较特殊(因为一来这三个点一定可见,同时也无法用gcd == 1判断):(0,1)、(1,0)、(1,1)
  • 对于其他点,我们发现只要 g c d ( x , y ) = = 1 gcd(x,y) == 1 gcd(x,y)==1,那就可见,有一类特例就是 x = = y x == y x==y(但是也无妨,因为欧拉函数不算1,算自身,我们可以看作不算自身,算1)
  • 我们对称地考虑,考虑 x > y x > y x>y的情况,枚举 x x x,计算欧拉函数的值,累加,最后乘2,注意加上上面的三个特例
  • 如何计算欧拉函数呢?
    • 做法一:就是利用质因数分解,这个比较麻烦,每次使用都要调用计算
    • 做法二:在欧拉筛的过程中,进行计算,分为四类处理
      • 处理 φ ( 1 ) = 1 \varphi(1) = 1 φ(1)=1
      • 处理 φ ( p ) = p − 1    ,    p    i s    a    p r i m e \varphi(p) = p-1\;,\; p \;is \;a \;prime φ(p)=p1,pisaprime
      • 处理 φ ( z ∗ p ) = φ ( z ) ⋅ p    ,    z m o d    p = = 0 \varphi(z*p) = \varphi(z) \cdot p\;,\; z \mod p == 0 φ(zp)=φ(z)p,zmodp==0
        • φ ( z ∗ p ) \varphi(z*p) φ(zp) 起手的 n n n φ ( z ) \varphi(z) φ(z)多了 p
      • 处理 φ ( z ∗ p ) = φ ( z ) ⋅ ( p − 1 )    ,    z m o d    p ≠ 0 \varphi(z*p) = \varphi(z) \cdot (p-1)\;,\; z \mod p \neq0 φ(zp)=φ(z)(p1),zmodp=0
        • φ ( z ∗ p ) \varphi(z*p) φ(zp) 起手的 n n n φ ( z ) \varphi(z) φ(z)多了 p,同时还要考虑一个新的质因数 p p p


代码

质因数分解版

#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int get_phi(int n)
{
    int ans = n;
    for(int i = 2; i*i <= n; i++)
    {
        if(n % i == 0)
        {
            ans = ans * (i-1) / i;
            while(n % i == 0) n /= i;
        }
    }
    
    if(n > 1) ans = ans * (n-1) / n;
    
    return ans;
}

int main()
{
    int t;
    cin >> t;
    int cnt = 0;
    while(t--)
    {
        int n;
        cin >> n;
        int res = 3;
        for(int x = 2; x <= n; x++)
        {
            res += 2*get_phi(x);
        }
        
        cout << ++cnt << ' ' << n << ' ' << res << '\n';
    }
    return 0;
}

欧拉筛版

#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int primes[N], idx;
bool st[N];
int phi[N];
void get_primes(int n)
{
    phi[1] = 1;
    for(int i = 2; i <= n; i++)
    {
        if(!st[i])
        {
            primes[++idx] = i;
            phi[i] = i-1;
        }
        for(int j = 1; primes[j]*i <= n; 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);
        }
    }
}
int main()
{
    get_primes(1000);
    
    int t;
    cin >> t;
    int cnt = 0;
    while(t--)
    {
        int n;
        cin >> n;
        int res = 3;
        for(int x = 2; x <= n; x++)
        {
            res += 2*phi[x];
        }
        
        cout << ++cnt << ' ' << n << ' ' << res << '\n';
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自己偷偷玩!(NSFW)无内容审查大模型推荐

大家好&#xff0c;我是画画的小强 今天给大家推荐几个(NSFW)无内容审查的大模型&#xff0c;可以让你部署在本地电脑运行&#xff01; CausalLM-14B CausalLM-14B 是基于阿里通义实验室的大模型 Qwen-14B 加入其他中文数据集训练而来&#xff0c;经过量化和 DPO 算法的重构…

2025台球展,2025河南台球及配套设施展览会3月举办

阳春三月&#xff0c;年度招商季&#xff0c;壹肆柒中国国际台球产业博览会助力全国台球企业拓市场&#xff1b; 2025中国&#xff08;郑州&#xff09;国际台球产业博览会&#xff08;壹肆柒台球展&#xff09; The 2025 China (Zhengzhou) International Billiards Industry…

朋友圈内容折叠全解析:原因与对策

你是否遇到过精心编写的朋友圈动态被微信自动折叠成一行&#xff0c;甚至出现“叠中叠”现象&#xff0c;多条动态被压缩在一起&#xff1f;这种情况被称为“朋友圈折叠”&#xff0c;它影响着信息的曝光率和互动性。为了帮助你更好地管理朋友圈内容&#xff0c;我将为你详细解…

uni-app App版本更新

效果图&#xff1a; 前言 在移动应用开发中&#xff0c;确保用户能够及时更新到最新版本是非常重要的。本文将介绍如何在 uni-app 中实现 App 整包更新功能&#xff0c;并提供相关代码示例以帮助理解。 代码实现 2.1 引入模块 首先&#xff0c;我们需要引入用于处理更新的模块…

阿博图书馆管理:SpringBoot开发实践

第三章 系统分析 通过对系统功能模块分析可以得知&#xff0c;主要是对项目元素组合、分解和更换做出相应的单元&#xff0c;再通过系统模块来规划出一个原则&#xff0c;系统的设计首先是围绕用户需求进行开发设计的&#xff0c;主要是为了能够更好的管理信息和方便用户&#…

AI智能时代:哪款编程工具让你的工作效率翻倍?

引言 在日益繁忙的工作环境中&#xff0c;选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度&#xff0c;甚至让团队协作更加顺畅。那么&#xff0c;哪款编程工具让你的工作效率翻倍&#xff1f;是智能的代码编…

MISC - 第七天(练习)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天继续讲解MISC的相关知识点 [BJDCTF2020]just_a_rar 下载之后发现rar压缩包&#xff0c;名称为4位数&#xff0c;使用暴力破解 rar压缩包口令 2016 存放了一张jpg图片 使用StegSolve 工具Flie Format选项卡&#x…

网络编程:掌握TCP Socket和UDP Socket

IP地址&#xff1a; 两台计算机通信&#xff0c;双方都必须有IP地址。 IPV4地址有32位&#xff0c;由四个8位二进制组成&#xff0c;因为不好记所以我们把二进制转化为十进制&#xff0c;比如192.168.0.20&#xff0c;这称为点分十进制。 IPV6有128位&#xff0c;由8个16位的…

Splashtop 自收购 Foxpass 以来新业务增长62%

2024年9月24日 加利福尼亚州库比蒂诺 Splashtop 在简化远程办公解决方案领域处于领先地位&#xff0c;今天宣布继去年收购 Foxpass 之后&#xff0c;新的 Foxpass 业务实现了62%的增长。Splashtop 的 Foxpass Cloud RADIUS 可确保企业 Wi-Fi 网络安全&#xff0c;防止未经授权…

牛羊饲料加工机械成套设备:满足养殖需求

饲料加工机械成套设备在畜牧业中扮演着至关重要的角色&#xff0c;是保障畜禽健康成长和畜牧业发展的重要基础。这些设备通过配料、粉碎、混合等步骤&#xff0c;生产出不同畜禽需求的饲料&#xff0c;为畜牧业的可持续发展提供了有力支持。 饲料加工机械成套设备是牛羊养殖场…

机器学习常用的评价指标原理和代码

最近面试的时候&#xff0c;很多面试官问道了我项目中的一些评价指标的算法和原理&#xff0c;我觉得这确实也是一个很重要的内容&#xff0c;所以趁这个机会综合起来一块复习一下&#xff0c;在刷力扣的时候也不能忘记项目最常用的内容嘛。当然还包括一些深度学习的例如我项目…

OJ在线评测系统 判题机开发 保证Docker容器执行的安全性

实现Docker容器的安全性 我们现在怎么保证使用docker容器执行的安全性&#xff1f; docker只不过实现了系统与系统之间的隔离 真实情况还是需要我们去排查安全问题 毕竟没有绝对的安全 执行超时 占用内存 读文件信息泄露 执行死程序 超时设置 执行容器的时候 增加超时参…

FileLink跨网文件交换:高效、安全、灵活的企业文件传输新方案

在当今数字化时代&#xff0c;企业间的数据交流与协作已成为推动业务发展的关键要素。然而&#xff0c;网络边界的存在往往成为文件传输的障碍&#xff0c;尤其是跨网络环境的文件交换&#xff0c;更是面临诸多挑战。为了打破这一瓶颈&#xff0c;FileLink跨网文件交换系统应运…

《动手学深度学习》笔记2.1——神经网络从基础→进阶 (层和块 - 自定义块)

目录 0. 前言 原书正文&#xff08;第五章&#xff09; 第五章 - 第一节 - 层和块 - 自定义块 1. Sequential() PyTorch高级API 2. MLP() 无传入参数 3. MySequential() 传入任意层(块) 4. FixedHiddenMLP() 无传入参数-固定隐藏层 5. NestMLP() 传入嵌套块-多次嵌套 …

GPU共享技术深度剖析与总结

在人工智能和深度学习领域&#xff0c;GPU&#xff08;图形处理器&#xff09;已成为不可或缺的计算工具。随着深度学习模型的规模和复杂性的增加&#xff0c;单个GPU已经难以满足所有训练需求&#xff0c;GPU共享技术应运而生&#xff0c;成为提高训练效率的重要手段。本文将深…

【十八】MySQL 8.0 新特性

MySQL 8.0 新特性 目录 MySQL 8.0 新特性 概述 简述 1、数据字典 2、原子数据定义语句 3、升级过程 4、会话重用 5、安全和账户管理 6、资源管理 7、表加密管理 8、InnoDB增强功能 9、字符集支持 10、增强JSON功能 11、数据类型的支持 12、查询的优化 13、公用…

SQL进阶技巧:如何计算块熵?

目录 0 信息量定义 信息熵 1 块熵定义 2 问题描述 ​3 数据准备 4 问题分析 5 小结 想要进一步了解SQL这门艺术语言的&#xff0c;可以订阅我的专栏数字化建设通关指南&#xff0c;将在该专栏进行详细解析。专栏 原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式…

240927-各种卷积最清晰易懂blender动画展示

240927-一些常用卷积清晰易懂的blender动画展示&#xff08;Conv、GConv、DWConv、1*1Conv、Shuffle&#xff09; 在几个月前&#xff0c;写过一篇关于卷积过程中输入图像维度变化的博客240627_关于CNN中图像维度变化问题_图像的尺寸为什么又四个维度-CSDN博客&#xff0c;但是…

新手教学系列——在MySQL分表中批量调整表结构的实践与优化

在当今的互联网业务中,随着数据量的不断增长,单个数据库的处理能力往往难以满足高并发、高性能的要求。因此,分库分表已经成为解决数据库扩展性问题的主流方案之一。然而,分表虽然能有效提升数据库的读写性能,但也带来了一个新的挑战:当业务需求变化时,需要对大量分表进…

【DAY20240927】经典深度学习模型对比:LeNet5、CNN、ResNet20、AlexNet、TextCNN 与 VGG-11

文章目录 前言一、LeNet5二、CNN三、AlexNet四、ResNet20五、TextCNN六、VGG-11 前言 We leverage 6 models to deal with the data, i.e., LeNet5 (LeNet) (LeCun et al. 1989), a synthetic CNN network (CNN), ResNet20 (ResNet) (He et al.2016), AlexNet (Krizhevsky, Su…