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

欧拉函数

时间:2023-07-30 21:13:29浏览次数:33  
标签:frac 函数 sum varphi times prod 欧拉 gcd

欧拉函数的几个性质(以下 \(p\) 无特殊说明,都为质数):

  1. 若 \(gcd(a,b)=1\) ,则 \(\varphi(a)\times \varphi(b)\),证明不会,大家记住就行了

  2. \(n=\sum_{d|n}\varphi(d)\)

    证明:设 \(f(x)\) 表示 \(gcd(k,n)=x\) 的数的个数( \(k<=n\) )

    结论:\(n=\sum_{i=1}^nf(i)\)

    我们可以分类讨论(保证 \(x<=n\)):

    1. \(x\) 是 \(n\) 的约数,那么 \(gcd(x,n)=x\) ,可以有 \(1\) 的贡献
    2. \(x\) 不是 \(n\) 的约数,\(x\) 也和 \(n\) 不互质,那么一定会被他们俩的最大公约数带来 \(1\) 的贡献
    3. \(x\) 和 \(n\) 互质,那么会被 \(gcd(x,n)=1\) 带来 \(1\) 的贡献

    综上:每个数 \(x\) 都会且只会被统计一次 \(1\) 的贡献

    证出结论:\(n=\sum_{i=1}^nf(i)\)

    现在我们观察上面的式子:\(gcd(k,n)=d\) 等价于 \(gcd(\frac{k}{d},\frac{n}{d})=1\) 也就等价于 \(\varphi(\frac{n}{d})\)

    所以上面的结论可以转化成:\(n=\sum_{d|n}\varphi(\frac{n}{d})=\sum_{d|n}\varphi(d)\)

  3. 若 \(n=p^k\) ,则 \(\varphi(n)=p^k-p^{k-1}\)

    可以看出用到了容斥,用总的数量,减去和 \(n\) 不互质的数量。

    法一:设 \(x\) 为 \(p\) 的系数,则 \(x\) 的取值范围为 \(1,2,3,...,p^{k-1}\) ,所以总共有 \(p^{k-1}\) 个与 \(n\) 不互质的数

    法二:\(p^k/p\) 就是 \(p\) 的倍数在 \(1-n\) 中出现的个数,即 \(p^{k-1}\)

  4. \(\varphi(p^k)=p^{k-1}\times(p-1)\)

    这个证明是简单的

    上面已经得出 \(\varphi(p^k)=p^k-p^{k-1}\) 我们把 \(p^{k-1}\) 提出来

    可以得到 \(\varphi(p^k)=p^{k-1}\times(p-1)\)

  5. \(\varphi(n)=n*\prod_{i=1}^c\frac{p_i-1}{p_i}\) ( \(c\) 是 \(n\) 的质因数个数)

    证明:

    已知 \(n=\prod_{i=1}^c \varphi(p_i^{k_i})\) (证明:由 \(1\) 性质可知)

    则 \(n=\prod_{i=1}^c (p^k-p^{k-1})\) 这次我们提出来 \(p^k\)

    式子就变成 \(n=\prod_{i=1}^c(p^k\times(1-\frac{1}{p}))\)

了解了这些性质以后,我们就可以愉快的进行欧拉筛了

分类讨论:

  1. 若 \(p\) 为素数,则 \(\varphi(p)=p-1\)

  2. 发现 \(n\) 会被 \(p\times n'\) 筛掉

    1. \(p\) 是 \(n'\) 的最小质因数,\(\varphi(n)=p\times \varphi(n')\)

      证明:

      \(\varphi(n)=n\times\prod_{i=1}^c\frac{p_i-1}{p_i}\)

      把 \(n\) 分解成 \(p\times n'\) 可知 \(\varphi(n)=p\times n'\times\prod_{i=1}^c\frac{p_i-1}{p_i}\)

      把后两项合并得: \(\varphi(n)=p\times \varphi(n')\)

    2. \(p\) 不是 \(n'\) 的最小质因数

      则 \(\varphi(n)=\varphi(n')\times p\)

      即 \(\varphi(n)=\varphi(n')\times(p-1)\)

到这里,欧拉筛就结束了,花了一晚上时间,一个题没调,但是感觉理解的透彻多了!

给个代码,大家可以理解一下:

void init()
{
	phi[1]=1;
	for (int i=2;i<N;i++)
	{
		if (!vis[i]) pr[++cnt]=i,phi[i]=i-1;
		for (int j=1;pr[j]*i<N;j++)
		{
			vis[pr[j]*i]=1;
			if (i%pr[j]==0)
			{
				phi[pr[j]*i]=phi[i]*pr[j];
				break;
			}
			phi[pr[j]*i]=phi[i]*(pr[j]-1);
		}
	}
	for (int i=1;i<N;i++) sum[i]=sum[i-1]+phi[i];
}

标签:frac,函数,sum,varphi,times,prod,欧拉,gcd
From: https://www.cnblogs.com/taozhiming/p/17592038.html

相关文章

  • React(十二):props的函数组件中使用
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>props的函数组件实现</title><scriptsrc="https://unpkg.com/react@18/umd/react.development.js"></script><scriptsr......
  • C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽
    第8章函数探幽本章内容包括:内联函数。引用变量。如何按引用传递函数参数。默认参数。函数重载。函数模板。函数模板具体化。通过第7章,您了解到很多有关C++函数的知识,但需要学习的知识还很多。C++还提供许多新的函数特性,使之有别于C语言。新特性包括内联函数、......
  • 无涯教程-jQuery - css( name, value )方法函数
    css(name,value)方法将单个样式属性设置为所有匹配元素上的值。css(name,value)-语法selector.css(name,value)这是此方法使用的所有参数的描述-name  - 要设置的属性的名称。value   - 属性的值。css(name,value)-示例以下是一个简单的示......
  • 无涯教程-jQuery Online Test函数
    jQuery在线测试模拟了真正的在线认证考试。您将看到基于jQuery框架概念的多项选择题(MCQ),将为您提供四个options。您将为该问题选择最合适的答案,然后继续进行下一个问题,而不会浪费时间。完成完整的考试后,您将获得在线考试分数。总问题数-20最长时间-20分钟StartTe......
  • C++虚函数、static_cast、dynamic_cast
        C++虚函数:当一个类中拥有至少一个虚函数,那么编译器就会构建出一个虚函数表来指示这些函数的地址,假如继承该类的子类定义并实现了一个同名并具有同样函数签名的方法重写了基类中的方法,那么虚函数表会将该函数指向新的地址。    此时多态性就体现出来了:当我们将基......
  • 无涯教程-jQuery Online Quiz函数
    以下测验提供与jQueryFramework相关的多项选择题(MCQ)。您将必须阅读所有给定的答案,然后单击正确的答案。如果您不确定答案,则可以使用显示答案按钮检查答案。您可以使用下一个测验按钮检查测验中的新问题集。Q1-如何获得传递给函数的参数总数?A-使用args.length属性......
  • 正点原子Ubuntu入门016---shell脚本条件判断、函数和循环
    一、shell脚本的条件判断虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂的就不行了shell脚本呢提供了if  then 条件判断语句,写法:if条件判断;then//判断条件成立要做的事情fi   ifthenelse语法 if条件判断;then//判断条件成立要做的事情e......
  • 无涯教程-jQuery Interview Questions函数
    尊敬的读者,这些jQuery面试问题是专门设计的,目的是让您熟悉在您采访jQuery时可能遇到的问题的性质。根据我的经验,优秀的面试官几乎不会计划在面试过程中提出任何特定的问题,通常,问题是从该主题的一些基本概念开始的,然后根据进一步的讨论和您的回答继续进行讨论-Whatisj......
  • 无涯教程-jQuery - Tabs组件函数
    窗口小部件选项卡函数可与JqueryUI中的窗口小部件一起使用。选项卡用于在分成逻辑部分的内容之间交换。Tabs-语法$("#tabs").tabs();Tabs-示例以下是显示Tab用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><title>......
  • 无涯教程-jQuery - Spinner组件函数
    WidgetSpinner函数可与JqueryUI中的窗口小部件一起使用。Spinner提供了一种从一组中选择一个值的快速方法。Spinner-语法$("#menu").selectmenu();Spinner-示例以下是显示Spinner用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="......