【欧拉函数】最大公约数之和

感觉就是欧拉函数裸题啊

ez捏

问题-最大公约数之和 (51nod.com)

题意:

【欧拉函数】最大公约数之和_第1张图片

思路:

枚举i肯定超时

考虑枚举gcd

那就是去枚举n的因子p

然后根据题意推一推式子就出来了!

【欧拉函数】最大公约数之和_第2张图片

Code:

#include 

#define int long long

using namespace std;

int n;

int phi(int x){
	vector > v;
	int res=x;
	for(int i=2;i<=x/i;i++){
		if(x%i==0){
			int s=0; 
			while(x%i==0){
				x/=i;
				s++;
			}
			v.push_back({i,s});
		}
	}
	if(x>1) v.push_back({x,1});
	for(int i=0;i>n;
	set S;
	for(int i=1;i<=n/i;i++){
		if(n%i==0){
			S.insert(i);
			if(i!=n/i) S.insert(n/i);
		}
	}
	//for(auto it:S) cout<>__;
	while(__--)solve();return 0;
}

 

你可能感兴趣的:(数学,算法,c++,数据结构)