首页 > 其他分享 >久违了!欧拉函数

久违了!欧拉函数

时间:2022-10-28 11:47:51浏览次数:129  
标签:phi gcd int 久违 k2 k1 ans 欧拉 函数

GCD - HDU 2588 - Virtual Judge (vjudge.net)

题意:

给定n,m,n<=1e9

for(int i=1;i<=n;i++)
{
    if(gcd(i,n)>=m)cnt++;
}

注意到n<=1e9,这个模拟算法是不能通过的

如何优化这个计算过程呢?

若 gcd(i,n)>=m,设d=gcd(i,n),也就是d>=m的时候,cnt++

设i=k1*d,n=k2*d

gcd(i,n)=gcd(k1*d,k2*d)=d*gcd(k1,k2)=d 

也就是:gcd(k1,k2)=1

我们就可以从枚举for(int i=1;i<=n;i++),变为枚举n的因子:for(int i=1;i*i<=n;i++)

此时,若 i是n的因子,则n/i 也是n的因子

即可以O(n)->O(sqrt(n))

转化为,1<=k1<=k2,有多少对gcd(k1,k2)=1

芜湖,这不就是欧拉函数?

注意到若 i*i==n&&i>=m时:i=n/i,这时只加一次

#include<bits/stdc++.h>
int phi(int n)
{
    int m=(int)std::sqrt(n+0.5);
    int ans=n;
    for(int i=2;i<=m;i++)
    {
        if(n%i==0)
        {
            ans=ans/i*(i-1);
            while(n%i==0)n/=i;
        }
    }
    if(n>1)ans=ans/n*(n-1);
    return ans;
}
int main()
{
    int t;std::cin>>t;
    while(t--)
    {
        int n,m;std::cin>>n>>m;
        int ans=0;
        int d;
        for(d=1;d*d<n;d++)
        {
            if(n%d==0)
            {
                if(d>=m)ans+=phi(n/d);
                if((n/d)>=m)ans+=phi(d);
            }
        }
        if(d*d==n&&d>=m)
        {
            ans+=phi(d);
        }
        std::cout<<ans<<"\n";
    }
    return 0;
}

 

标签:phi,gcd,int,久违,k2,k1,ans,欧拉,函数
From: https://www.cnblogs.com/FeiShi/p/16835262.html

相关文章

  • Oracle 数据库 日常操作函数
    --获取当天数据select*fromPOS_TRANMAINwheretrunc(SLDATE)=trunc(sysdate);--decode等同于casewhenthendecode(条件,值1,返回值1,值2,返回值2....)--to_char......
  • L:python基础知识:数学运算函数,字符串内置函数,math数学模块,random随机模块,datetim
    数学运算函数asb(x)返回绝对值divmod(x,y)返回一个(x//y,x%y)的元组,可以用两个变量来接收它max(seq),min(seq)返回seq序列的最大值,最小值pow(x,y)返回x的y次方round(x,p......
  • 数论-欧拉函数 学习笔记
    一、欧拉函数1.欧拉函数的定义欧拉函数(Euler’stotientfunction),即,表示的是小于等于和比如说。当n是质数的时候,显然有。2.欧拉函数的一些性质欧拉函数是积性函数。......
  • 利用OFFSET函数与COUNTA函数创建动态名称,数据动态变化
    我们在excel中可以利用OFFSET函数与COUNTA函数的组合,可以创建一个动态的名称。动态名称是名称的高级用法,能够实现对一个未知大小的区域的引用,利用OFFSET函数与COUNTA函数创......
  • SetWindowPos 函数详解
    //声明:SetWindowPos(hWnd:HWND;{窗口句柄}hWndInsertAfter:HWND;{窗口的Z顺序}X,Y:Integer;{位置}cx,cy:Integer;{大小}uFlags:UINT{选项}):BOOL;//hWndIn......
  • 【Serverless】快速集成云函数HarmonyOS
    ​1、学习目标什么是AppGalleryConnect云函数云函数是一项Serverless计算服务,提供FaaS(FunctionasaService)能力,可以帮助开发者大幅简化应用开发与运维相关事务,降低应......
  • TS中的 InstanceType函数
    InstanceType函数 文档中介绍:该函数返回(构造)由某个构造函数构造出来的实例类型组成的类型classC{x=0;y=0;}typeT0=InstanceType<typeofC>;......
  • 24、python函数篇 hashlib模块、subprocess模块、logging模块
    目录一、hashlib模块1、简介2、基本操作与用法二、subprocess模块1、简介2、基本操作与用法三、logging模块1、简介2、基本操作与用法一、hashlib模块1、简介什么是哈希......
  • Spark SQL概述、函数用法
    SparkSQL  底层还是基于RDD的,常用的语言DSL底层架构    在idea中的操作引入pom依赖<dependency><groupId>org.apache.spark</gr......
  • 第六章 函数
    6.1函数基础调用函数:函数的调用将完成两项工作,一是实参初始化函数对应的形参;二是控制权从从主调函数转移到被调函数,主调函数的执行被中断,被调函数开始执行。当函数遇到ret......