题目
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如 1/7 , 3/4 , 1/8 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1和 2020)?
运行限制
最大运行时间:2s
最大运行内存: 128M
思路
循环遍历(嵌套),然后检查是不是既约分数,如果是则加2,因为分母和分子可以交换,注意1/1也是既约分数。
代码
#include<iostream>
using namespace std;
int f(int a,int b){//求最大公约数int t;while(b != 0){t = a%b;a = b;b = t;}if(a == 1) return 2;//因为分母和分子可以交换else return 0;
}
int main()
{int cnt = 1;//统计for(int i = 1;i <= 2020;i++){for(int j = 1;j < i;j++){cnt += f(i,j);}}cout<<cnt<<endl;return 0;
}
总结
- 注意有没有特殊的情况,如1等等
- 注意题目有没有要求,如分母和分子可以交换