C語(yǔ)言之實(shí)現(xiàn)輾轉(zhuǎn)相除法的兩種方式
C語(yǔ)言實(shí)現(xiàn)輾轉(zhuǎn)相除法
輾轉(zhuǎn)相除法
又名“歐幾里德算法”
圖片來(lái)自搜狗搜索。
第一種方式
根據(jù)定義就可以寫(xiě)出一種比較簡(jiǎn)單的實(shí)現(xiàn)方法:、
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a,b,c; scanf("%d %d",&a,&b); c=a%b; while(c!=0) { a=b; b=c; c=a%b; } printf("%d",b);//將除數(shù)輸出 return 0; }
第二種方式
熟練掌握輾轉(zhuǎn)相除法之后,可以用遞歸的形式來(lái)實(shí)現(xiàn):
#include <stdio.h> #include <stdlib.h> //遞歸函數(shù) int gcd(int a,int b){ if(b==0) return a;//返回a,即返回上一步的b return gcd(b,a%b); } int main(int argc, char *argv[]) { int a,b; scanf("%d %d",&a,&b); printf("%d",gcd(a,b)); return 0; }
C語(yǔ)言求最大公約數(shù)(輾轉(zhuǎn)相除法)
歐幾里得算法又稱(chēng)輾轉(zhuǎn)相除法,是指用于計(jì)算兩個(gè)非負(fù)整數(shù)a,b的最大公約數(shù)。
計(jì)算公式為gcd(a,b) = gcd(b,a mod b)= gcd(a mod b,b mod (a mod b))→直到gcd(m,0)。
b處的值放入a,b處的值變?yōu)樵璦的值對(duì)原b的值
比如:a=12,b=8,gcd(12,8)=gcd(8,4)=gcd(4,0),所以m=4,即最大公約數(shù)為4。
#include<stdio.h> int main() { int a=0,b=0;//求a,b的最大公約數(shù) scanf("%d %d",&a,&b); int m=0;//用于存放最大公約數(shù) int t=0;//設(shè)置一個(gè)存放器,用于存放a值 while(b!=0)//直到b變量為0,a變量就是所求的最大公約數(shù) { t=b; b=a%b;//b為a對(duì)b取余數(shù) a=t;//把原來(lái)b的值放入a變量中 } printf("%d",a); return 0; }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
opencv4.5.4+VS2022開(kāi)發(fā)環(huán)境搭建的實(shí)現(xiàn)
本文主要介紹了opencv4.5.4+VS2022開(kāi)發(fā)環(huán)境搭建的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C語(yǔ)言sizeof與字符串處理與動(dòng)態(tài)內(nèi)存分配及main函數(shù)參數(shù)詳解
這篇文章主要介紹了C語(yǔ)言字符串處理函數(shù)、sizeof、動(dòng)態(tài)內(nèi)存分配函數(shù)、main函數(shù)參數(shù)問(wèn)題,static在修飾變量的時(shí)候,如果是修飾全局變量,則跟全局變量功能一樣,通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07詳解C++內(nèi)存的代碼區(qū),全局區(qū),棧區(qū)和堆區(qū)
這篇文章主要為大家介紹了C++內(nèi)存的代碼區(qū),全局區(qū),棧區(qū)和堆區(qū),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12利用C語(yǔ)言實(shí)現(xiàn)任務(wù)調(diào)度的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用純C語(yǔ)言實(shí)現(xiàn)任務(wù)調(diào)度(可用于STM32、C51等單片機(jī)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04C++哈希表之閉散列方法的模擬實(shí)現(xiàn)詳解
閉散列指(開(kāi)放定址法)發(fā)生沖突時(shí),如果哈希表沒(méi)有被填滿,則表內(nèi)一定還有其他空閑位置,可以把沖突值放到下一個(gè)沒(méi)有被占用的空余位置上。本文將模擬實(shí)現(xiàn)閉散列方法,需要的可以參考一下2022-11-11C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C++動(dòng)態(tài)內(nèi)存分配(new/new[]和delete/delete[])詳解
這篇文章主要介紹了C++動(dòng)態(tài)內(nèi)存分配(new/new[]和delete/delete[])詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(59.螺旋矩陣之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07