我们用g(x)表示x的欧拉函数值,即1~x与x互质的数的个数

欧拉函数公式为: g(x)= y*((x1-1)/x1)*((x2-1)/x2)*((x3-1)/x3)....(其中x1, x2, x3....为质数)

证明:

1. 对于质数x,有g(x)=x-1

2. 对于x^h,其中x为质数,那么显然1~x^h之间包含x因子的数不与x^h互质,有:

x, 2*x, 3*x, 4*x.....x^(h-1)*x 共x^(h-1)个,很显然有g(x^h)=x^h-x^(h-1),其中x^(h-1)为

不与x^h互质的数。

例如:

y=3^4
... 3 .2*3.. 3*3 ..4*3. 5*3 3*3*3 .7*3..... 3*3*3*3
g(y)=3^4-3^3

3. 对于任意一个数y,我们可以将其分解成质数的积的形式,再由乘法原理得到g(y)

例如:
y=3^4*5^7
g(y)=(3^4-3^3)*(5^7-5^6)

4. 综上所述:
对于任意y=x1^h1*x2^h2*x3^h3......有:
g(y)=(x1^h1-x1^(h1-1))*(x2^h2-x2^(h2-1))*(x3^h3-x3^(h3-1))....
    =x1^h1*(1-1/x1)*x2^h2*(1-1/x2)*x3^h3*(1-1/x3)....
    =y*(1-1/x1)*(1-1/x2)*(1-1/x3)....
    =y*((x1-1)/x1)*((x2-1)/x2)*((x3-1)/x3)....

至此得到了欧拉函数

代码:

 /*  int euler(int n){
int ans=1;
for(int i=2; i*i<=n; i++){
if(n%i==0){
ans*=(i-1);
n/=i;
while(n%i==0){
ans*=i;
n/=i;
}
}
}
if(n>1){
ans*=n-1;
}
}*/ int euler(int n){
int ans=n;
for(int i=; i*i<=n; i++){
if(n%i==){
ans=ans*(i-)/i;
while(n%i==){
n/=i;
}
}
}
if(n>){
ans=ans*(n-)/n;
}
}

euler证明的更多相关文章

  1. 【poj1284-Primitive Roots】欧拉函数-奇素数的原根个数

    http://poj.org/problem?id=1284 题意:给定一个奇素数p,求p的原根个数. 原根: { (xi mod p) | 1 <= i <= p-1 } is equa ...

  2. poj 1284 Primitive Roots (原根)

    Primitive Roots http://poj.org/problem?id=1284 Time Limit: 1000MS   Memory Limit: 10000K       Descr ...

  3. Primitive Roots(poj1284)

    Primitive Roots Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3928   Accepted: 2342 D ...

  4. ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭)

    欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 辣么,怎么求哩?~(-o ̄▽ ̄)-o 可以先在1到n-1中找到与n不互质的数,然后把他们减掉 比如φ(12) 把12质因数分解 ...

  5. nyoj1007(euler 函数)

    euler(x)公式能计算小于等于x的并且和x互质的数的个数: 我们再看一下如何求小于等于n的和n互质的数的和, 我们用sum(n)表示: 若gcd(x, a)=1,则有gcd(x, x-a)=1: ...

  6. [家里蹲大学数学杂志]第237期Euler公式的美

    1 Euler 公式 $e^{i\pi}+1=0$ (1) 它把 a.  $e:$ 自然对数的底 $\approx 2. 718281828459$ (数分) b.  $i$: 虚数单位 $=\sqr ...

  7. The Euler function(线性筛欧拉函数)

    /* 题意:(n)表示小于n与n互质的数有多少个,给你两个数a,b让你计算a+(a+1)+(a+2)+......+b; 初步思路:暴力搞一下,打表 #放弃:打了十几分钟没打完 #改进:欧拉函数:具体 ...

  8. 证明与计算(2): 离散对数问题(Discrete logarithm Problem, DLP)

    离散对数问题,英文是Discrete logarithm Problem,有时候简写为Discrete log,该问题是十几个开放数学问题(Open Problems in Mathematics, ...

  9. 『素数 Prime判定和线性欧拉筛法 The sieve of Euler』

    素数(Prime)及判定 定义 素数又称质数,一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数,否则称为合数. 1既不是素数也不是合数. 判定 如何判定一个数是否是素数呢?显然,我 ...

随机推荐

  1. CMake命令笔记

    project 为整个工程设置名称.版本和启用语言 project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])projec ...

  2. a little riak book

    a little riak book 的无聊总结 <pre name="code" class="python">#!/bin/bash # Ria ...

  3. iOS中版本号的获取及其意义

    //对应的是发布的版本号,也就是build #define APP_VERSION [[[NSBundle mainBundle] infoDictionary] objectForKey:@&quo ...

  4. React + webpack 环境配置

    安装配置Babel babel-preset-es2015 ES6语法包,使代码可以随意地使用ES6的新特性. babel-preset-react React语法包,专门用于React的优化,在代码 ...

  5. 解决Android Studio Fetching Android SDK component information失败问题【转】

    本文转载自:http://blog.csdn.net/isesar/article/details/41908089 Android Studio 安装完成后,如果直接启动,Android Studi ...

  6. 手写Future模式

    根据前面我所说的Futrue模式,手写一个: 分别对应的Java代码,大家拿来参考: package FutureTest; //公共data数据接口 public abstract class Da ...

  7. Oracle 数据库基础 出现invalid username/password; logon denied错误解决方案

    出现invalid username/password; logon denied错误解决方案 [win7或win8中 cmd要以管理员身份运行] 1.Dos下输入命令:sqlplus sys/安装时 ...

  8. H264 各种profile

    关键字:H264 ,base profile, main profile, extend profile, high profile. 提到High Profile H.264解码许多人并不了解,那么 ...

  9. __FILE__,__LINE__,__func__ 真好用,DEBUG利器啊!

    我是不喜欢用类似VC下的F5,F10.曾经很喜欢用.被代码逻辑逼的没招了.所以不喜欢用了. 比如,错误是根据动态数据,产生的行为错误,无论是该写的未写,还是不该写的写了.指针跑飞什么等等,无非就是上述 ...

  10. !function(){}()和function(){}()区别

    控制台打印结果如下所示,接下来看一下具体运行,参考https://swordair.com/function-and-exclamation-mark/: 让一个函数声明语句变成了一个表达式