用C語言編寫程式:求兩數的最大公約數。
此程式用了3個方法(相減法、窮舉法、輾轉相除法)來求兩數的最大公約數,使用者可自己選擇用哪種演算法。
#include<stdio.h> #include<stdlib.h> int select=1;//select 為是否退出系統的標記 void subtract() { int a,b; printf("請輸入兩個資料:\n"); scanf("%d %d", &a, &b); while(a!=b)//用大數減小數直到差和減數相同,輸出最大公約數 { if(a>b) a=a-b; else b=b-a; } printf("最大公約數為%d。\n", a); } void divide()//輾轉相除法 { int a, b, c; printf("請輸入兩個資料:\n"); scanf("%d %d", &a, &b); while(b!=0) //當餘數為0時跳出迴圈 { c=a%b; a=b; b=c; } printf("最大公約數為%d。\n", a); } void exhaustion()//窮舉法求最大公約數 { int a,b,c; printf("請輸入兩個資料:\n"); scanf("%d %d", &a, &b); for(c=a;c>0;c--) if(a%c==0&&b%c==0)//第一次可以整除的數為最大公約數 { printf("最大公約數為%d。\n",c); break;//獲得最大公約數就跳出迴圈 } } void menu()//初始介面 { int i; printf("\n"); printf(" 求兩數的最大公約數演算法 \n"); printf(" ********************************************************\n"); printf(" * 請選擇演算法: *\n"); printf(" * 0.相減法。 1.相除法。 *\n"); printf(" * 2.窮舉法。 3.退出程式。 *\n"); printf(" ********************************************************\n"); scanf("%d",&i); switch(i) { case 0: subtract();break; case 1: divide();break; case 2: exhaustion();break; case 3: select =0;break; default: printf("請在0-3之間選擇\n"); } } int main() { while(select) { menu(); } system("pause"); return 0; }
相關推薦
用C語言編寫程式:求兩數的最大公約數。
此程式用了3個方法(相減法、窮舉法、輾轉相除法)來求兩數的最大公約數,使用者可自己選擇用哪種演算法。 #include<stdio.h> #include<stdlib.h> int select=1;//select 為是否退出系統的標記 voi
使用C語言編寫程式,求任意兩個整數的較大值
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define max(a,b)((a>b?a:b)) int main() {
輸入一行字元分別統計出其中英文字母、空格、數字和其他字元的個數。(用c++語言編寫程式)【寫的第1篇部落格,很高興
#include<stdio.h> int main() { char ch; //定義ch為字元型變數 int a=0,b=0,c=0,d=0; //定義a,b,c,d為整型變數並賦初值 while(scanf("%c",&ch),ch!=’\n’) //輸入字元直到c
C語言:寫兩個函式,分別求兩個最大公約數和最小公倍數
題目:寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這個兩個函式,並輸出結果。兩個整數由鍵盤輸入 分析:求最大公約數,需要用到輾轉相除法: 輾轉相除法:設兩數為a、b(a>b
Problem B: C語言習題5.17--求兩數的商
Problem B: C語言習題5.17--求兩數的商 Time Limit: 1 Sec Memory Limit: 128 MB Description a/b計算商固然簡單方便,可如果商是無限小數或很長位數小數的情況,你該如何求指定位數的商呢?編寫函式
1.交換兩值內容 2.不創建臨時變量交換兩只內容 3.求十個數中的最大值 4.講三個數由大到小輸出 5.求兩個數最大公約數
www. 最大公約數 十個 following .com blank 臨時變量 lan follow 露x都對貝姨芽沽1才39賢http://www.facebolw.com/space/2104128 ZP鋪巢嗣3瀉HX7Dhttp://www.facebolw.com
求兩個數最大公約數
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stdlib.h> void main() { int a,b,i; printf("請輸入2個整數\n"); scanf("%d%d", &
你所必須知道的三種基本求兩個數最大公約數的演算法
1 迭代法求最大公約數 /*迭代法求最大公約數 *原理:m n r;將r賦值給n,n賦值給m */ #include <iostream> using namespace std; int Gcd(int m, int n) { int r; r =
呼叫函式求兩個數最大公約數和最小公倍數
1. /* 2. * Copyright (c) 2012, 煙臺大學計算機學院 3. * All rights reserved. 4. * 作 者: 呂建 5. * 完成日期:
輾轉相除法、相減法求兩自然數最大公約數和最小公倍數
l 輾轉相除法 演算法描述: 輾轉相除法是求兩個正整數的最大公約數的一種演算法. 有兩整數a和b: ① a%b得餘數c ② 若c=0,則b即為兩數的最大公約數 ③ 若c≠0,則a=b,b=c,再
python實現遞迴和非遞迴求兩個數最大公約數、最小公倍數
最大公約數和最小公倍數的概念大家都很熟悉了,在這裡就不多說了,今天這個是因為做題的時候遇到了所以就寫下來作為記錄,也希望幫到別人,下面是程式碼: #!/usr/bin/env python #coding:utf-8 from fractions import gc
歐幾里德演算法(求兩數最大公因數)
兩個整數的最大公因數(gcd)是同時整除兩個大最大整數。即gcd(50,15)=5. 演算法連續計算餘數直到除數為0,最後的非0餘數就是最大公因數。因此若M=1989,N=1590
兩數最大公約數
兩數最大公約數 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(){ int a, b; printf("請輸入兩個數a和b分別為:"); scanf("%d,%d", &a, &b)
用c語言編寫求n的k次方函式,用迭代和遞迴兩種方法
在c語言中求n的k次方函式。雖然c語言中庫函式中已經存在,但是知道它的程式碼或者實現思想也是很必要的。那麼我們用兩種方式來實現:第一種:迭代法(效率在資料量比較大時要相比遞迴快一點)int power_ineration(int n,int k)//迭代 { int q =
使用C語言編寫程式,求解有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個序列的前20項
使用C語言編寫程式,求解有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個序列的前20項 void test() { //思路:找規律->從3/2開始 下一個數的分
用C#語言編寫:數組分析器
find 操作 fin numbers 排序 ole class 數字 輸入 static void Main(string[] args) { #region 創建數組 Console.Write("請輸入數組的
用C#語言編寫:集合管理器
list 管理 main 繼續 console reac 提示 回車 read static void Main(string[] args) { List<int> numbers = new List<int>
用C語言編寫一個輸出最大值的程式
void main(){int a,b,c,max;scanf("%d%d%d",&a,&b,&c); if(a>b)max=a;elsemax=b; if(c>max)max=c;printf("max is %d",max);getch
用c語言編寫兩個數的交換,三種方法
下面是從函式角度,還有簡單的交換 法去實現兩個數的交換。其中函式用到指標,通過前兩種方法可以深刻的體會到指標變得的含義。 #include <stdio.h> void swap(int *a,int *b) { int temp; temp=*a;