信奥数学-欧拉函数-欧拉定理-费马小定理

欧拉函数
定义:欧拉函数是小于n的数中与n互质的数的数目。例如φ(8)=4,因为1,3,5,7均和8互质
φ(8)=8*(1-1/2)=4

#include<bits/stdc++.h>
using namespace std;

/*
f(n)=n*(1-1/p)*(1-1/q)... 
    =n*p/(p-1) /q*(q-1) ...
    先除后乘避免溢出 
*/

int euler(int n) {
    int ans = n;
    for (int i = 2; i*i <= ans; i++) {
        if (n % i == 0) {   
            ans = ans / i * (i-1);//找到一个因子 
            // 将相同的因子除去
            while (n % i == 0) {//如果n多次使用此因子相乘 去除 
                n /= i;
            }
        }
    }
    if (n > 1) {//由于for循环到i*i<=ans 所以不是i^2时 n都>1 少算一个质数 再运算一次 
        ans = ans / n * (n-1);
    }
    return ans;
}
int n;
int main(){
	while(cin>>n){
		cout<<euler(n)<<endl;
	}
}

P3601 签到题
https://www.luogu.com.cn/problem/P3601
** [SDOI2008] 仪仗队**
https://www.luogu.com.cn/problem/P2158

欧拉函数-欧拉定理
https://www.bilibili.com/video/BV1up4y1H7XW?spm_id_from=333.999.0.0&vd_source=29bdf11ae30b7aaca85ec74dc1b8e1ad
https://www.bilibili.com/video/BV1vf4y1p7Mc/?spm_id_from=333.788.recommend_more_video.-1&vd_source=29bdf11ae30b7aaca85ec74dc1b8e1ad

费马小定理
假如p是质数,且gcd(a,p)=1,那么 \(a^{(p-1)}≡1(mod~p)\)
即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1
薇薇带你一分钟学会费马小定理
https://www.bilibili.com/video/BV1La4y1e7T5?spm_id_from=333.337.search-card.all.click
素数(五)费马是如何检验素数的
https://www.bilibili.com/video/BV1vt411Z7Yb?spm_id_from=333.337.search-card.all.click

posted @ 2022-05-28 21:04  new-code  阅读(157)  评论(0)    收藏  举报