您的位置:首页 > 科技 > IT业 > 经典蓝桥题目-------欧拉函数的应用

经典蓝桥题目-------欧拉函数的应用

2024/10/10 17:30:27 来源:https://blog.csdn.net/2301_79363050/article/details/142186536  浏览:    关键词:经典蓝桥题目-------欧拉函数的应用

输入样例:

3
4 9
5 10
42 9999999967

输出样例:

6
1
9999999966

分析:

设  gcd(a,m) = d,则 d|a,d|m

而  gcd(a,m) = gcd(a+x,m) 则有 d|x

根据题目有 0<=x<m

同样的有 0<= x' < m'     (x',m'是同时除以d的值)

于是我们发现只要求m'的欧拉函数即可

不会欧拉函数的可以看我这篇博客,写的很详细

欧拉函数的定义与应用

代码演示:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;typedef long long LL;// 求最大公约数
LL gcd(LL a,LL b)
{return b?gcd(b,a%b):a;
}// 求欧啦函数
LL calc_primes(LL n)
{LL res = n;for(LL i=2;i<=n/i;i++){if(n%i==0){res = res/i*(i-1);while(n%i==0) n /= i;}}if(n>1) res = res/n*(n-1);return res;
}int main(void)
{int t;cin >> t;while(t--){LL l,r;cin >> l >> r;LL d = gcd(l,r);cout << calc_primes(r/d) << endl;}return 0;
}

感谢查看!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com