Σd|nφ(d)=n的证明

本文通过实例解析并证明了一个关于欧拉函数的性质,通过将每个φ(d)中包含的数乘以n/d的方式,展示了如何确保每个数字恰好被计算一次,从而验证了Σ(d|n)φ(d)=n的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

P.S.:这玩意的证明很有意思,本蒟蒻用了一种奇葩的方式证明的,比较复杂,由于考虑到很多像我一样的蒟蒻看不懂大佬们奥妙重重的博客,于是就讲得通俗易懂一点


首先,φ(n)函数大家应该知道,就是求小于n的所有数k中,gcd(k,n)=1的所有k的个数,即φ(n)=Σ(d|n)1


然后,我们来看一下证明思路:

以12为例:

φ(1)=1

1

φ(2)=1

1

φ(3)=2

1,2

φ(4)=2

1,3

φ(6)=2

1,5

φ(12)=4

1,5,7,11

这些数字看似毫无关联,但是,让我们对其进行一些处理:

将每一个φ(d)中包含的的数都乘上n/d

我们就会得到这么一个表格:

d 1 2 3 4 5 6 7 8 9 10 11 12
1            1*12=12
2      1*6=6      
3    1*4=4    2*4=8    
4   1*3=3      3*3=9   
6  1*2=2        5*2=10  
12 1*1=1    5*1=5  7*1=7    11*1=11 

我们发现每一列都有且仅有一个红块,而每行的红块个数即为该行的φ值



我们用代码来说明其正确性:



#include 
using namespace std;
int main()
{
	int n,i,j;
	int a[1000];
	for (j=1;j<=n;j++) a[j]=0;
	cin >> n;
	cout << "   d   ";
	for (i=1;i<=n;i++) cout << setw(4) << i << "   ";
	cout << endl;
	for (i=1;i<=n;i++)
	{
		if (n%i==0)
		{
			for (j=1;j<=i;j++)
			    if (__gcd(i,j)==1)
			    	a[j*n/i]=1;
			cout << setw(4) << i << "   " ;
			for (j=1;j<=n;j++)
			    if (a[j]==0) cout << " false ";
				else cout << " true  ";
			cout << endl;
		}
	}
}


为什么能用这种方式证明呢?
让我们来分析分析:
我们先设集合A(d)表示满足φ(d)的元素
即:A(d)={q(d,1),q(d,2),......,q(d,φ(d))}
那么显然:gcd(d,q(d,i))=1
我们将A(d)中的每一种元素都乘以n/d
得到集合B(d)={x*n/d|x∈A(d)}
然后我们会发现:gcd(n,q(d,i)*n/d)=gcd(d*n/d,q(d,i)*n/d)=n/d
由上式可知:
B(d)为小于n,且与n的最大公约数为n/d的数的集合
而两个数的最大公约数是唯一的,故不可能存在重复
又因为原式为:Σ(d|n)φ(d)
所以:
该式考虑到了n的所有约数,故不可能存在遗漏。
即全集U={1,2,3,......,n}=B(1)∪B(2)∪......∪B(n)
到了这里就显然有答案了哈~~
设A属于Rmxn,我们要证明不等式 |A||2>=max{|yTAx|:x属于Rn,y属于Rm,||x||2=||y||2=1} 成立。 首先,我们知道矩阵A的2-范数定义为矩阵A的最大奇异值,记作|A||2。而对于向量x和y,||x||2和||y||2分别表示向量x和y的2-范数。 根据矩阵的定义,我们可以将矩阵A表示为A = UΣV^T,其中U是一个正交矩阵,Σ是一个对角矩阵,V^T是V的转置矩阵。 现在我们来证明不等式 |A||2>=max{|yTAx|:x属于Rn,y属于Rm,||x||2=||y||2=1}: 首先,我们可以将向量x和y表示为x = Vx'和y = Uy',其中x'和y'是单位向量。 那么不等式左边可以表示为 |A||2 = |UΣV^T||2 = |Σ||2。 而不等式右边可以表示为 max{|yTAx|:x属于Rn,y属于Rm,||x||2=||y||2=1} = max{|(Uy')T(UΣV^T)(Vx')|:x'属于Rn,y'属于Rm,||x'||2=||y'||2=1}。 由于U和V都是正交矩阵,所以它们的转置矩阵等于它们的逆矩阵,即U^T = U^(-1)和V^T = V^(-1)。 将上述等式代入不等式右边,得到 max{|(Uy')T(UΣV^T)(Vx')|:x'属于Rn,y'属于Rm,||x'||2=||y'||2=1} = max{|(y')T(U^(-1)ΣV^(-1))(Vx')|:x'属于Rn,y'属于Rm,||x'||2=||y'||2=1}。 由于U^(-1)ΣV^(-1)是一个对角矩阵,记作Σ',所以不等式右边可以进一步化简为 max{|(y')TΣ'x'|:x'属于Rn,y'属于Rm,||x'||2=||y'||2=1}。 由于x'和y'是单位向量,所以不等式右边的max函数可以进一步化简为 max{|(y')TΣ'x'|:||x'||2=||y'||2=1}。 而|(y')TΣ'x'|表示的是矩阵Σ'的最大奇异值,记作|Σ'||2。 综上所述,不等式右边可以表示为 max{|(y')TΣ'x'|:||x'||2=||y'||2=1} = |Σ'||2。 因此,我们得到不等式 |A||2>=max{|yTAx|:x属于Rn,y属于Rm,||x||2=||y||2=1} 成立。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值