求两个数的最大公约数和最小公倍数的C程序

昨天C语言上机课,编几个程序,其中就有“求两个数的最大公约数和最小公倍数”,颇自豪地我较早就编出来了^_^

但最大公约数那题后来调试时发现如果不是输入本身就能整除的两数就会输出两数的最小值,因为程序找到最大公约数后仍在运行,直到大于两数的最小值。回来后继续试还是失败。上网找答案,发现颇复杂地用到“辗转相除法”,据说老师提示的也是那个。

本人愚钝,还是觉得复杂难理解,我觉得我的程序应该还是可行的,就差一句……今早再次修改,终于OK啦!太有成就感了!

也许方法比较菜,但也是与我在网上见到的颇不相同的,分享下!

这是最大公约数的:

main()
{
int m,n,a,b,i;
printf(”input m n”);
scanf(”%d%d”,&m,&n);
if(m>=n)i=n;
else i=m;
a=1;
while (a<=i)
{
(m%a==0)&&(n%a==0);
if ((m%a==0)&&(n%a==0)) b=a;
a++;
}
printf(”%d”,b);
}

这是最小公倍数的;

main()
{
int m,n,i,a;
printf(”input m n”);
scanf(”%d%d”,&m,&n);
if(m>=n) i=m;
else i=n;
a=i;
while(a>=i)
{
(a%n==0)&&(a%m==0);
break;
a++;
}
printf(”%d”,a);
}

目录:大学, 自己做的 关键词: |引用通告

“求两个数的最大公约数和最小公倍数的C程序”有6个评论


  1. 1貌似好靓

    未学到while循环。。前面睇得明。。后面5明。。

    yy学编程。。肯定很有趣。。

    [回复此评论]

  2. 2Snowyy

    不大能解讀這“有趣”T_T

    [回复此评论]

  3. 3小蔚同学

    俺这文科生,学的是vb^……编个闰年都费了个半条气……
    Option Explicit
    Dim y As String
    Dim m As String

    Private Sub Command1_Click()

    y = Val(Text1.Text)
    m = Text2.Text
    Select Case m
    Case 1, 3, 5, 7, 8, 10, 12
    Label1.Caption = 31
    Case 4, 6, 9, 11
    Label1.Caption = 30
    Case 2
    If y Mod 4 = 0 And y Mod 100 0 Then
    Label1.Caption = 29
    ElseIf y Mod 400 = 0 Then
    Label1.Caption = 29
    Else
    Label1.Caption = 28
    End If
    End Select
    End Sub

    多谢信工学院的师兄……

    [回复此评论]

  4. 4Snowyy

    似乎c語言好懂些呢……

    [回复此评论]

  5. 5貌似好靓

    上面的VB算法不错。。不过C的条例更清楚。。

    某次交作业赶时间,偷左YY份程序上交。。5好意思。。。
    不过。。引号用左全角。。汗。。。

    [回复此评论]

  6. 6Snowyy

    不是我的錯誤,那確實是半角符號,再後台仍顯示正常,到了這裡就成全角了,甚不解中???

    另,假期追收版權費!

    [回复此评论]

发现错字一只,重酬链接一坨

你的表情可能是以下某个:σ(^○^) (;> ω <)/ (/´θ`)/ m(_ _)m #(┬_┬)

(p--) ╮( ̄▽ ̄")╭ <( ̄︶ ̄)/ ○( ̄﹏ ̄)○ ¢( ̄□ ̄;) (ノ-o-)ノ φ(..)