ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

LCM,GCD

2026/8/8 18:27:15 拓冰建站 浏览量
LCM,GCD
  • 在 C++ 的<algorithm>头文件(bits/stdc++.h已经包含了这个头文件)中,__gcd(a, b)是内置函数,作用是计算ab的最大公约数。
  • 举个例子:__gcd(4,6)=2__gcd(5,7)=1__gcd(9,3)=3
  • 代码中k=k/__gcd(k,i)*i是计算ki最小公倍数(LCM)的标准写法:公式:LCM(a,b) = (a*b) / GCD(a,b),写成a/__gcd(a,b)*b是为了避免a*b数值过
    #include<bits/stdc++.h> using namespace std; int mod[50]={0,0,1,2,1,4,5,4,1,2,9,0,5,10,11,14,9,0,11,18,9,11,11,15,17,9,23,20,25,16,29,27,25,11,17,4,29,22,37,23,9,1,11,11,33,29,15,5,41,46}; int main() { long long ans=3;//所要寻找的正整数 long long k=2;//步长 for(long long i=2;i<50;i++) { //一个死循环,为了实现找到满足条件的数才停止的逻辑 while(1) { //满足条件,更新步长 if(ans%i==mod[i]) { k=k/__gcd(k,i)*i;//这是LCM,最小公倍数 break;//跳出while循环,i++ } else { ans=ans+k;//不满足,继续按照步长寻找 } } } cout<<ans<<endl; return 0; }
    大导致溢出。