先看题目
分析
这个题目看起来就比较好下手,主要考察到最大公约数的知识点
经典操作
先取俩个数字中更小的那个数,然后依次递减1,找到能除断时候停止
伪代码
t=min(第一个数,第二个数)
while(t){
if(两个数都能除断) break;
t--;
}
if(t==1)
sum++;
看代码
#include<iostream>
#include<cmath>
using namespace std;
long long sum=0;
void check(int x,int y)
{
int t=min(x,y);
while(t>1)
{
if(x%t==0&&y%t==0) break;
t--;
}
if(t==1) sum++;
}
int main()
{
int i,j;
for(i=1;i<=2020;i++) //分子
for(j=1;j<=2020;j++) //分母
check(i,j);
cout<<sum;
return 0;
}
复杂度为n^2,运行时间稍微长一点,但是能做出来