最小公倍数 C++ 最高效的算法?(最高效!)
发布网友
发布时间:2022-05-17 23:08
我来回答
共6个回答
热心网友
时间:2023-11-14 11:39
delegate TResult F<T1, T2, TResult>(F<T1, T2, TResult> self, T1 arg1, T2 arg2);
static Func<T1, T2, TResult> Make<T1, T2, TResult>(F<T1, T2, TResult> self)
{
return (x, y) => self(self, x, y);
}
static void Main(string[] args)
{
var * = Make<int, int, int>((f, x, y) => y == 0 ? x : f(f, y, x % y));
Console.WriteLine(*(192, 216)); // 24
Console.ReadKey();
}
这是C#写的
热心网友
时间:2023-11-14 11:39
/*欧几里德算法:辗转求余
原理: *(a,b)=*(b,a mod b)
当b为0时,两数的最大公约数即为a
getchar()会接受前一个scanf的回车符
*/
#include<stdio.h>
unsigned int Gcd( unsigned int M, unsigned int N )
{
unsigned int Rem;
while( N > 0 )
{
Rem = M % N;
M = N;
N = Rem;
}
return M;
}
void main()
{
int temp;
int a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("the greatest common factor of %d and %d is ",a,b);
printf("%d\n",Gcd(a,b));
}
参考资料:http://ke.baidu.com/view/1241014.htm
热心网友
时间:2023-11-14 11:40
int G(int a,int b)
{
int temp,k=a*b;
if(b>a)//这一段是辗转相除求最大公约数
{
temp=a;
a=b;
b=temp;
}
while(a%b)
{
temp=a%b;
a=b;
b=temp;
}
return k/b;
}
热心网友
时间:2023-11-14 11:40
main(){
int m,n;
scanf("%d",m);
scanf("%d",n);
int r=m*n;
if(m==n)
printf("",r/m);
else if(m>n){
m=m-n;
}
else{
n=n-m;
}
}
参考资料:http://zhidao.baidu.com/question/12820326
热心网友
时间:2023-11-14 11:41
int *(a,b){
if(a%b==0) return b;
return *(b,a%b);
}
#define lcm(a,b) a/*(a,b)*b
如果我手写没错的话...
热心网友
时间:2023-11-14 11:42
辗转相除求最大公约数,然后用两数积除以最大公约数