C語言如何計算兩個數(shù)的最小公倍數(shù)
C語言計算兩個數(shù)的最小公倍數(shù)
思路
最小公倍數(shù)是能同時整除兩個數(shù)A,B的最小整數(shù),可以慢慢從小到大尋找這個數(shù):
#include<stdio.h> int main() { int a, b; scanf("%d%d", &a, &b); for (int i = 1; ; i++) if (i%a == 0 && i%b == 0)//尋找能同時整除a,b的整數(shù)i { printf("%d", i); break;//找到,退出 } return 0; }
當(dāng)然,上面這個方法簡單,但是循環(huán)的次數(shù)較多,可以從a,b中的較大值開始查找,以優(yōu)化算法:
#include<stdio.h> int main() { int a, b; scanf("%d%d", &a, &b); if (a < b) //如果a<b,交換值,讓a成為較大值 { int temp; temp = a; a = b; b = temp; } for (int i = a; ; i++) if (i%a == 0 && i%b == 0)//尋找能同時整除a,b的整數(shù)i { printf("%d\n", i); break; } return 0; }
C語言求兩個數(shù)的公倍數(shù)
方案一
暴力求解,隨便找出一個輸入的數(shù)為臨時變量,依次+1去除兩個數(shù),等同時可以整除輸入的兩個數(shù)時,這個數(shù)就是公倍數(shù)。
求最小公倍數(shù) a>=1,b<=100000用函數(shù)實現(xiàn)
int main() { ?? ?int a = 0, b = 0; ?? ?printf("請輸入a和b的值\n"); ?? ?scanf("%d ?%d", &a, &b); ?? ?int tem ; ?? ?while (1) ?? ?{ ?? ??? ?if (tem % a == 0 && tem % b == 0) ?? ??? ?{ ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?tem++; ?? ?} ?? ?printf("%d", tem); ?? ?return 0; }
方案二
在一的上面優(yōu)化,找到第一個數(shù)的倍數(shù)并用它來除第二個數(shù),如果能整除,則是最小公倍數(shù)
# define ?_CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { ?? ?int a = 0, b = 0; ?? ?printf("請輸入a和b的值\n"); ?? ?scanf("%d ?%d",&a, &b); ?? ?int i=1; ?? ?while (1) ?? ?{ ?? ??? ?if ((a * i) % b == 0) ?? ??? ?{ ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?i++; ?? ?} ?? ?printf("%d", a * i); ?? ?return 0;? ?? }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言結(jié)構(gòu)體內(nèi)存的對齊知識詳解
這篇文章主要介紹了C語言結(jié)構(gòu)體內(nèi)存的對齊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03C++的static關(guān)鍵字及變量存儲位置總結(jié)
今天看博文時,看到了c++的static關(guān)鍵字的一些總結(jié),還涉及到了一些代碼的存儲位置;接下來為您詳細呈現(xiàn)2012-11-11