为什么b和k不互质,则无法遍历完整个序列? 当公差b和周期k不互质时,就会存在一些位置无法被遍历到,因为有些位置的步长是公差b的倍数,而周期k也是公差b的倍数,因此在遍历的过程中,就会跳过一些位置,导致无法遍历完整个序列。举个例子,如果公差为2,周期为4,那么遍历的过程中只会经过序列中的偶数位置,无法经过奇数位置,因为奇数位置的步长是2,而周期4也是2的倍数,因此无法覆盖到奇数位置。而当公差b和周期k互质时,步长为b的序列可以覆盖到所有位置,因为在k次遍历后,步长为b的位置序列会回到起点,从而能够覆盖到所有位置。
#include <iostream>
#include<cstring>
#include<iomanip>
#include<math.h>
using namespace std;
int gcd(int a,int b)
{
while(b!=0)
{
int temp=a;
a=b;
b=temp%b;
}
return a;
/*//用递归的辗转相除法,a,b过大栈会溢出
if(b==0)
return a;
else
{
int c=a%b;
gcd(b,c);
}
*/
}
int main()
{
int k,a,b;
cin>>k>>a>>b;
int i=gcd(k,b);
if(i==1)
{
cout<<"Yes";
}else
{
cout<<"No";
}
}