『壹』 C語言程序:用「輾轉相除法」求兩個正整數的最大公約數(程序填空)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b,r;
scanf("%d %d", &a, &b);
while (b != 0)//當其中一個數為0,另一個數就是兩數的最大公約數
{
r = a%b;
a = b;
b = r;
}
printf("最大公約數%d ", a);
system("pause");
}
例子:內
105252
252%105=容42;
105%42=21;
42%21=0;
即21為105與252的最大公約數
while語句若一直滿足條件,則會不斷的重復下去。但有時,需要停止循環,則可以用下面的三種方式:
一、在while語句中設定條件語句,條件不滿足,則循環自動停止。
如:只輸出3的倍數的循環;可以設置范圍為:0到20。
二、在循環結構中加入流程式控制制語句,可以使用戶退出循環。
1、break流程式控制制:強制中斷該運行區內的語句,跳出該運行區,繼續運行區域外的語句。
2、continue流程式控制制:也是中斷循環內的運行操作,並且從頭開始運行。
『貳』 C語言程序設計:用輾轉相除法求兩個整數的最大公約數。
#include<stdio.h>
intgcd(intn,intm)
{
/**********Program**********/
intt;
if(m>n)
{
t=m;m=n;n=t;
}
t=n%m;
while(t)
{
n=m;
m=t;
t=n%m;
}
returnm;
/**********End**********/
}
『叄』 什麼是輾轉相除法怎樣用c語言編程實現,用輾轉相除法
用輾轉相除法(即歐幾里得演算法)求兩個正整數的最大公約數.
解析:
設兩個數,n,假設m>=n,用m除以n,求得余數q.若q為0,則m為最大公約數;若q不等於0,則進行如下迭代:
m=n,n=q,即原除數變為新的被除數,原余數變為新的除數重復演算法,直到余數為0為止.余數為0時的除數n,即為原始m、n的最大公約數.
迭代初值:m,n的原始值;
q=m%n;
m=n;
n=q;
迭代條件:q!=0
例如:m=8;n=6
q=m%n(8%6==2)
m=n(m==6)
n=q(n==2)
因為:(q==2)!=0,重復演算法:
q=m%n(6%2==0)
m=n(m==2)余數為0時的除數n為最大公約數,n值賦給了m,所以輸出m的值
n=q(n==0)
因為:q==0 所以最大公約數為m的值
源程序:
#include
void main()
{
int m,n,q,a,b;
printf("Enter two integers:");
scanf("%d%d",&a,&b);
m=a;
n=b;
if(n>m)
{
int z;
z=m;m=n;n=z;//執行演算法前保證m的值比n的值大
}
do
{
q=m%n;
m=n;
n=q;
}while(q!=0);
printf("The greatest common divisor of");
printf("%d,%d is %d\n",a,b,m);
}
希望對你有所幫助!
『肆』 C語言程序填空:用輾轉相除法求兩個整數的最大公約數、最小公倍數。
其實這個用遞歸寫最方便~
while(n){
m = n;
n = r;
r = m%n;
}
printf("The min Gbshu=%d\n", m*r );
『伍』 vb編程實現用輾轉相除法求兩個數a和b的最大公約數
輾轉相除法求兩個數a和b的最大公約程序如下:
程式解析如下:
設兩數為a、b(b<a),用gcd(a,b)表示a,b的最大公約數,r=a mod b 為a除以b以後的余數,輾轉相除法即是要證明gcd(a,b)=gcd(b,r)。
第一步:令c=gcd(a,b),則設a=mc,b=nc
第二步:根據前提可知r =a-kb=mc-knc=(m-kn)c
第三步:根據第二步結果可知c也是r的因數
第四步:可以斷定m-kn與n互素【否則,可設m-kn=xd,n=yd,(d>1),則m=kn+xd=kyd+xd=(ky+x)d,則a=mc=(ky+x)dc,b=nc=ycd,故a與b最大公約數成為cd,而非c】
從而可知gcd(b,r)=c,繼而gcd(a,b)=gcd(b,r)。
證畢。
VB語言特點
結構化的程序設計語言:Visual Basic 6.0具有豐富的數據類型和眾多的內部函數。其採用模塊化和結構化程序設計語言,結構清晰,語法簡單,容易學習。
強大的資料庫功能:Visual Basic 6.0利用數據控制項可以訪問Access、FoxPro等多種資料庫系統,也可以訪問Excel、Lotus等多種電子表格。
ActiveX技術:ActiveX發展了原有的OLE技術,使開發人員擺脫了特定語言的束縛,方便地使用其他應用程序提供的功能,使Visual Basic 6.0能夠開發集聲音、圖像、動畫、字處理、電子表格、Web等對象於一體的應用程序。
網路功能:Visual Basic 6.0提供的DHTML(動態HTML)設計工具可以使開發者動態地創建和編輯Web頁面,使用戶能開發出多功能的網路應用軟體。
『陸』 C語言輾轉相除法
# include <stdio.h>
void simplify( const int *p1,const int *p2);
void main()
{
int a,b;
scanf ("%d/%d",&a,&b);
simplify(&a,&b);
}
void simplify( const int *p1,const int *p2)
{
int max = (*p1>*p2)?*p1:*p2; //確定最抄大數用來做輾襲轉相除法的分子
int min = (*p1>*p2)?*p2:*p1; //確定最小數用來做輾轉相除法的分母
int n = max%min; //n是用來判斷余數是否為0
while(n) //如果不為0,則進行下面的程序
{
max = min;
min = n;
n = max%min; //當余數 n=0時,min就是兩個數的最大公因數
}
int x = *p1/min;
int y = *p2/min;
printf ("%d/%d",x,y);
}
『柒』 編程一個C語言程序,輸入兩個數,採用輾轉相除法來計算最大公約數
可以參考下面的代碼:
#include <stdio.h>
int main()
{
int m, n, r;
scanf ("%d%d", &m, &n);
if (m>n){r=m, m=n, n=r;}
r=n%m;
while (r!=0){
n = m;
m = r;
r = n%m;
}
printf ("%d ", m);
return 0;
}
(7)本程序用輾轉相除法擴展閱讀:
函數 scanf() 是從標准輸入流stdin(標准輸入設備,一般指向鍵專盤)中讀內容屬的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
函數的第一個參數是格式字元串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的信息並存儲於可變參數列表中對應的指針所指位置。每一個指針要求非空,並且與字元串中的格式符一一順次對應。