求两个数的最大公约数和最小公倍数的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);
}


未学到while循环。。前面睇得明。。后面5明。。
yy学编程。。肯定很有趣。。
[回复此评论]
不大能解讀這“有趣”T_T
[回复此评论]
俺这文科生,学的是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
多谢信工学院的师兄……
[回复此评论]
似乎c語言好懂些呢……
[回复此评论]
上面的VB算法不错。。不过C的条例更清楚。。
某次交作业赶时间,偷左YY份程序上交。。5好意思。。。
不过。。引号用左全角。。汗。。。
[回复此评论]
不是我的錯誤,那確實是半角符號,再後台仍顯示正常,到了這裡就成全角了,甚不解中???
另,假期追收版權費!
[回复此评论]