试题 B: 既约分数
【问题描述】
如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如,3/4, 5/2, 1/8, 7/1 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1和 2020)?
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解
答案:2481215
解题思路:这题首先,当分母为一和分子为一时都符合条件,所以至少有2020+2019种,然后开始求其他情况,定义一个函数求分子和分母的最大公约数直接套模板就可以。在主调函数中,两层循环分别是分子和分母,然后开始遍历,最后得出结果后加上开头我们想的两种情况就可以了。
#include
using namespace std;
int yue(int a,int b)
{
int r;
do
{
r=a%b;
a=b;
b=r;
}while(r);
return a;
}
int main(void)
{
int n=0;
for(int i=2;i<=2020;i++)
for(int j=2;j<=2020;j++)
{
if(yue(i,j)==1)
n++;
}
cout<<n+2020+2019;
}