1
c++中有求最大公因数的求法:
g=__gcd(a,b);
g是a和b的最大共因数;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
2
c语言:
1举例:比如说56和24的最大公约数,我们用辗转相除法可以这么做:
56÷24=2······8
24÷8=3······0
所以56和24的最大公约数是8。
3
简单的来说辗转相除法的原理就是:
先比较两个数使第一个数为最大数a,第二个数为最小数b
使最大数%最小数得到余数a%b=temp
后将余数赋值给最小数a=temp再去除最大数b即b%a
一直往复直到余数不为0
4代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
long long a,b,i,t,mod;
scanf("%lld",&t);
while(t--)
{
scanf("%lld %lld",&a,&b);
mod=a%b;
while(mod!=0)//辗转相除法
{
a=b;
b=mod;
mod=a%b;
}
if(b==1) printf("Nao\n");//最后余数为0的除数即b=最大公因数,b=1,最大公因数是1;
else printf("Sim\n");//
}
return 0;
}
此算法的时间复杂度为0(n*n);