数论整理之欧拉函数

简介: 数论整理之欧拉函数

在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)

91.png


通式:

92.png

ps:那个不认识的符号是累乘 …… 卑微

其中p1, p2……pn为x的所有质因数,x是不为0的整数。

φ(1)=1(和1互质的数(小于等于1)就是1本身)。

注意:每种质因数只一个。 比如12=223那么φ(12)=φ(4 * 3)=φ(2 ^ 2 * 3 ^ 1)=(2 ^ 2-2 ^ 1)*(3 ^ 1-3 ^ 0)=4

若n是质数p的k次幂, ,因为除了p的倍数外,其他数都跟n互质。

设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值

φ:N→N,n→φ(n)称为欧拉函数。

欧拉函数是积性函数——若m,n互质,93.png

特殊性质:当n为奇质数时, , 证明与上述类似。

若n为质数则

94.png

95.png

//标程
//欧拉函数
#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long int
#define MAX 2000000+5
int euler[MAX];
void Euler(){
    for(int i=2;i<MAX;i++)
        euler[i] = i;
    for(int i=2;i<MAX;i++){
        if(euler[i]==i)
            for(int j=i;j<MAX;j+=i)
            euler[j] = euler[j]/i*(i-1);
    }
}
int main(){
    Euler();
    int n;
    euler[1] = 1;//这里要初始化euler[1] = 1;
    for(int i = 0;i < 20;i++)
    {
        cout<<euler[i]<<endl;
    }
  return 0;
}

例题:

96.png

97.png

#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long int
const int MAX = 1000010;
int euler[MAX];
void Euler(){
    for(int i=2;i<MAX;i++)
        euler[i] = i;
    for(int i=2;i<MAX;i++){
        if(euler[i]==i)
            for(int j=i;j<MAX;j+=i)
            euler[j] = euler[j]/i*(i-1);
    }
}
int main(){
    Euler();
    int T,n,a,cnt=1;
    ll ans;
    scanf("%d",&T);
    while(T--){
            ans = 0;
        scanf("%d",&n);
        while(n--){
            scanf("%d",&a);
            for(int i=a+1;;i++)
                if(euler[i]>=a){
                    ans+=i;
                    break;
                }
        }
        printf("Case %d: %lld Xukha\n",cnt,ans);
        cnt++;
    }
  return 0;
}
相关文章
|
6月前
|
测试技术
欧拉函数(看一遍就会系列)
欧拉函数(看一遍就会系列)
数论整理之唯一质因子分解方程
数论整理之唯一质因子分解方程
|
机器学习/深度学习
数论整理之特殊数two:卡特兰数
数论整理之特殊数two:卡特兰数
|
算法 C++
算法基础系列第四章——数论之从欧拉卷到欧几里得(2)
算法基础系列第四章——数论之从欧拉卷到欧几里得(2)
95 0
算法基础系列第四章——数论之从欧拉卷到欧几里得(2)
|
算法 C++
算法基础系列第四章——数论之从欧拉卷到欧几里得(1)
算法基础系列第四章——数论之从欧拉卷到欧几里得(1)
160 0
算法基础系列第四章——数论之从欧拉卷到欧几里得(1)
|
算法
数学知识:欧拉函数
复习acwing算法基础课的内容,本篇为讲解数学知识:欧拉函数,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
177 0
数学知识:欧拉函数
|
算法
数学:求欧拉函数算法模板
数学:求欧拉函数算法模板
102 0
|
C语言
浙大版《C语言程序设计(第3版)》题目集 - 习题10-4 递归求简单交错幂级数的部分和(15 分)
浙大版《C语言程序设计(第3版)》题目集 - 习题10-4 递归求简单交错幂级数的部分和(15 分)
153 0