如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如,3/4,5/2,1/8,7/1都是既约分数。
请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括 1
和 2020)?
简单暴力就行
答案:2481215
直接使用__gcd函数
#include<iostream>
#include<algorithm>
using namespace std;
int ans;
int main(){
for(int i=1;i<=2020;i++){
for(int j=1;j<=2020;j++){
if(__gcd(i,j)==1){
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
自己用辗转相除法写一个gcd函数 辗转相除法的核心是除数变被除数,余数变除数
#include<iostream>
#include<algorithm>
using namespace std;
int ans;
int gcd(int x,int y){
if(y==0){
return x;
}else{
return gcd(y,x%y);
}
}
int main(){
for(int i=1;i<=2020;i++){
for(int j=1;j<=2020;j++){
if(gcd(i,j)==1){
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
快速幂乘也很有意思,可以去看看
有问题可以留言交流٩(๑❛ᴗ❛๑)۶