B:既约分数
【问题描述】
如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如,3/4 , 2/5, 1/8 , 1/7 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1 和 2020)?
分析:由于是填空题,只需要暴力两层for循环遍历就行
代码实现:
#include<iostream>
#include<algorithm>
#include <stdio.h>
#include<stdlib.h>
using namespace std;
//求最大公约数
int gcd(int a, int b){
return b == 0 ? a : gcd(b, a%b);
}
int main(){
int i;
int j;
int sum = 0;
for (i = 1; i <= 2020; i++){
for (j = 1; j <= 2020; j++){
if (gcd(i, j) == 1)sum++;
}
}
cout << sum << endl;
system("pause");
return 0;
}
答案:2480415
该程序实现了计算1到2020之间所有既约分数的数量。通过两层循环遍历所有可能的分子和分母组合,并使用欧几里得算法计算它们的最大公约数,若为1,则计数加一。最终输出的计数是2480415,表明有这么多既约分数。
354

被折叠的 条评论
为什么被折叠?



