| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4710 人关注过本帖, 1 人收藏
标题:请问最大公约数怎么求啊?
只看楼主 加入收藏
goldgunman
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2004-4-21
收藏(1)
 问题点数:0 回复次数:8 
请问最大公约数怎么求啊?
请问最大公约数怎么求啊?两个数 的
搜索更多相关主题的帖子: 最大公约数 
2004-04-27 13:34
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 

Option Explicit

Private Sub Command1_Click() Dim A As Integer, B As Integer, C As Integer Dim i As Integer

A = Val(Text1.Text) B = Val(Text2.Text) If A < B Then C = A A = B B = C Else C = B End If Do While C >= 1 If A Mod C = 0 And B Mod C = 0 Then Label1.Caption = C Exit Do Else C = C - 1 End If Loop

End Sub


天津网站建设 http://www./
2004-04-27 14:11
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 

数学里列式求法

Option Explicit

Private Sub Command1_Click() Dim A As Integer, B As Integer, C As Integer Dim i As Integer

A = Val(Text1.Text) B = Val(Text2.Text) i = 2 C = 1 Do While A >= i And B >= i If A Mod i = 0 And B Mod i = 0 Then C = C * i A = A / i B = B / i i = 2 Else i = i + 1 End If Loop Label1.Caption = C

End Sub


天津网站建设 http://www./
2004-04-27 14:42
goldgunman
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2004-4-21
收藏
得分:0 
有收获
2004-04-27 14:52
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
收获 什么了?

天津网站建设 http://www./
2004-04-28 12:22
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
收藏
得分:0 

不用这样写~~~~

用欧,欧几里德算法,非常简单~~

#include <iostream> using namespace std; int main() { int r = -1,m = 119,n = 544; if (m < n) { int temp = m; m = n,n = temp; } while (r != 0) { r = m % n; if (r == 0) break; else m = n,n = r; } cout << n << endl;

return 0; }

[此贴子已经被作者于2004-05-05 11:14:56编辑过]


I am a big fan of c plus plus.
2004-04-28 17:44
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
请指教!

天津网站建设 http://www./
2004-04-28 23:02
wsllsg
Rank: 1
来 自:浙江杭州
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-7-23
收藏
得分:0 
[bo][un]C++大粉丝[/un] 在 2004-4-28 17:44 的发言:[/bo]

不用这样写~~~~
用欧,欧几里德算法,非常简单~~
#include <iostream>
using namespace std;
int main()
{
 int r = -1,m = 119,n = 544;
 if (m < n)
 {
  int temp = m;
  m = n,n = temp;
 }
 while  ...

额。。。这是C++的语言??
2008-07-23 12:29
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
function ExtendedGCD(A, B: TData; var X, Y: TData): TData; //A*X+B*Y=GCD(A,B)
begin
    if B = 0 then
    begin
        Result := A;
        X := 1;
        Y := 0;
    end
    else
    begin
        Result := ExtendedGCD(B, A mod B, Y, X);
        Dec(Y, A div B * X);
    end;
end;

    求最大公约数
递归(recursion):
function gcd(a,b:longint):longint;
 begin
   if b=0 then exit(a);
   exit(gcd(b,a mod b));
 end;
非递归(iterative):
function gcd(a,b:longint):longint;
  var t:longint;
  begin
   while b<>0 do
    begin
     t:=a;a:=b;b:=t mod b;
    end;
  exit(a);
 end;
或者使用扩展欧几里德算法(辗转相除法):
function extendedEuclid(a,b:longint;
var x,y:longint):longint;
var p,q:longint;
begin
  if b=0 then
   begin  x:=1;y:=0;exit(a);end;
  p:= extendedEuclid (b, a mod b,x,y);
  q:=x;x:=y;y:=q-a div b *y;
  exit(p);
end;
    求最小公倍数
k:=a*b div gcd(a,b);
2008-07-23 13:16
快速回复:请问最大公约数怎么求啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033499 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved