c語言求最大公約數
㈠ c語言求最大公約數
這個叫做輾轉相除法,是中國古代標準的求最大公約數的方法。兩個數正整數a〉b,如果a%b(a除b的余數)=0,b就是最大公約數;否則比較b與a÷b的余數c=a%b,兩者相除,余數為0,c是最大公約數;否則繼續比較c與b%c(余數),……,反復交換進行,直到余數為0
㈡ C語言求最大公約數的代碼
你的代碼,主要的錯誤在for循環里的判斷條件,應該是a%i!=0&&b%i!=0
不等號;但是,是了很久,發現這樣的演算法或者說思路也是錯誤的!因為你這樣找到的只是兩個數的最小公約數,而非最大公約數的,你可以用原來的想法,i
從
兩個數中較小者那個從大到小去循環,從而找到兩個數的公約數,也就是(從大到小)倒這來找公約數;或者建議你考慮輾轉相除法,輾轉相除法的思路是這樣的:若
m和n為這連個正整數,有:當m>n,m與n
的最大公約數等於
n
與
m%n的最大公約數當n=0
,m與
n
的最大公約數等於
m,以下是演算法,使用for語句:#include<stdio.h>
#include<windows.h>
int
main(){
int
a,b,m,n,r;
printf("輸入兩個正整數(請用逗號隔開):");
scanf("%d%d",&a,&b);
if(a>b)
{
m=a;
n=b;
}
else
{
m=b;
n=a;
}
for(r=b;r!=0;){
r=m%n;
m=n;
n=r;
}
printf("%d
和
%d
的最大公約數是:%d\n",a,b,m);
system("PAUSE");
return
0;
}
㈢ c語言如何求最大公約數和最小公倍數
#include <stdio.h>
int main()
{
int a,b,c,m,t;
printf("請輸入兩個數: ");
scanf("%d%d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=t;
}
m=a*b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("最大公約數是: %d ",b);
printf("最小公倍數是: %d ",m/b);
}
(3)c語言求最大公約數擴展閱讀
演算法思想
利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關系,如果 a 小於 b,則利用中間變數 t 將其互換。
再利用輾轉相除法求出最大公約數,進而求出最小公倍數。最後用格式輸出語句將其輸出。
#include<stdio.h>是在程序編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾,所以是c語言的程序語句。
㈣ c語言計算兩個數的最大公約數
#include <stdio.h>
int a,b,temp;
int Division(){
printf("請輸入兩個數(a,b):\n");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公約數為:%d\n",b);
return 0;
}
㈤ C語言程序設計如何求最大公約數
具體操作步驟如下:
一、新建一個C語言源程序,使用Visual C++6.0的軟體。
㈥ C語言求最大公約數
什麼錯誤?我運行得沒有問題啊?你把下面整個函數拷過去編譯.
----------------------------------
int fac(int x,int y)
{
int n,t,z;
if(x<y)
{
t=x;
x=y;
y=t;
}
n=x%y; //先比大小再求mod
while(n!=0)
{
x=y;
y=n;
n=x%y; //這里不能少
}
z=y;
return(z);
}
㈦ 如何用C語言求兩個數的最大公約數的三種演算法
1、相減法
#include<stdio.h>
int main()
{
int a,b;
int c=0;//計數器
while(1)//循環判斷的作用
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公約數是:%d ",a);
printf("%d ",c);
}
return 0;
}
運行效果:
2、輾轉相除法:
#include<stdio.h>
int a,b,temp;
int Division(){
printf("請輸入兩個數(a,b): ");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公約數為:%d ",b);
return 0;
}
3、窮舉法
#include<stdio.h>
int main()
{
int a,b,c;
int d=0;//計數器
while(1)
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;//三目運算符
while(a%c!=0||b%c!=0)
{
c--;
d++;
}
printf("最大公約數是:%d ",c);
printf("%d ",d);
}
return 0;
}
㈧ c語言編程求最大公約數和最小公倍數
#include<stdio.h>
int main()
{
int m,n;
int divisor,dividend,res;/*除數 被除數 余數*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循環體是三條語句,不加大括弧循環只執行一條語句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return 0;
}
兩數相乘除以最大公約數就是最小公倍數
㈨ c語言求最大公約數
1、新建一個C語言源程序,這里使用Visual C++6.0的軟體:
㈩ c語言求兩個數的最大公約數
程序是正確的,只是演算法上過於繁瑣,i從1到a,所有的數都要循環一次。