公倍数

最大公约数与公倍数

余生长醉 提交于 2020-02-08 23:03:28
输入两个正整数,求它们的最大公约数与最小公倍数。 Input输入两个正整数,两个整数之间用空格分开。 数据保证在 int 范围内。 Output第一行输出最大公约数; 第二行输出最小公倍数。 #include<stdio.h> #define max(a,b)(a>b)?a:b #define min(a,b)(a<b)?a:b int main() { int a, b, c, n, m; scanf("%d %d", &a, &b); n=max(a,b); m=min(a,b); while(n%m!=0) { c=n%m; n=m; m=c; }\取最大公约数m printf("%d\n", m); printf("%d\n", a b/m);\取最大公倍数 return 0; } 总结: 1.取最小公约数,注意最大值除最小值,故需判断大小,用define定义即可。 2.最大公倍数=a b/最大公约数。 来源: CSDN 作者: ??.reture 链接: https://blog.csdn.net/waiting121384/article/details/104228536

蓝桥杯 公约数公倍数

前提是你 提交于 2020-01-23 14:10:52
最小公倍数 #include<stdio.h> int main(){ int i,a,b; scanf("%d%d",&a,&b); for (i=a;;i++){ if(i%a==0&&i%b==0) { printf("%d",i);break; } } return 0; } 最小公约数与交换 #include<stdio.h> void Swap(int *a,int *b) { *a^=*b; *b^=*a; *a^=*b; } GYS(int a,int b) { int c; while(a%b!=0) { c=a%b; a=b; b=c;} return b; } int main() { int a,b; puts("Please input a and b:"); scanf("%d%d",&a,&b); Swap(&a,&b); printf("%d and %d \n最大公约数为:%d\n",a,b,GYS(a,b)); return 0; } 呐呐呐呐。。。看到一个不错的求公约数的优雅代码: int gcd (int m,int n) { if (n==0) return m; return gcd (n,m%n); }  来源: https://www.cnblogs.com/zhangzimu/p/6104237.html

HDU 1019[Least Common Multiple] GCD

廉价感情. 提交于 2019-12-29 07:44:15
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1019 题目大意:求n个数的最大公约数 关键思想:最大公倍数等于乘积除以最大公约数。LCM具有结合律和交换律 代码如下 //求最大公倍数。 #include <iostream> using namespace std; typedef long long ll; ll gcd(ll a,ll b){ return a%b==0?b:gcd(b,a%b); } ll lcm(ll a,ll b){ return a*b/gcd(a,b);//最大公倍数等于乘积除以最大公约数 } int main(){ int T,n; ll a,ans; cin>>T; while(T--){ ans=1; cin>>n; for(int i=0;i<n;i++){ cin>>a; ans=lcm(ans,a); } cout<<ans<<endl; } return 0; }    来源: https://www.cnblogs.com/G-M-WuJieMatrix/p/6420810.html

POJ1006: 中国剩余定理的完美演绎

岁酱吖の 提交于 2019-12-23 22:09:54
问题描述 人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天开始,算出最少再过多少天后三个峰值同时出现。 问题分析 首先我们要知道,任意两个峰值之间一定相距整数倍的周期。假设一年的第N天达到峰值,则下次达到峰值的时间为N+Tk(T是周期,k是任意正整数)。所以,三个峰值同时出现的那一天(S)应满足 S = N1 + T1*k1 = N2 + T2*k2 = N3 + T3*k3 N1,N2,N3分别为为体力,情感,智力出现峰值的日期, T1,T2,T3分别为体力,情感,智力周期。 我们需要求出k1,k2,k3三个非负整数使上面的等式成立。 想直接求出k1,k2,k3貌似很难,但是我们的目的是求出S, 可以考虑从结果逆推。根据上面的等式,S满足三个要求:除以T1余数为N1,除以T2余数为N2,除以T3余数为N3。这样我们就把问题转化为求一个最小数,该数除以T1余N1,除以T2余N2,除以T3余N3。这就是著名的中国剩余定理,我们的老祖宗在几千年前已经对这个问题想出了一个精妙的解法。依据此解法的算法,时间复杂度可达到O(1)。下面就介绍一下中国剩余定理。

POJ 1006 Biorhythms (数论-中国剩余定理)

允我心安 提交于 2019-12-07 12:50:44
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 111285 Accepted: 34638 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical, emotional, and intellectual cycles, and they have periods of lengths 23, 28, and 33 days, respectively. There is one peak in each period of a cycle. At the peak of a cycle, a person performs at his or her best in the corresponding field (physical, emotional or mental). For example, if it is the mental curve, thought processes will be sharper and

A.签到题 (公约数||公倍数) (Comet OJ - Contest #7)

笑着哭i 提交于 2019-11-29 19:48:29
题目描述 多次询问,每次询问给一个值域范围 [l,r] [ l , r ],要回答下列四个问题: 从这个范围内选出两个整数(两个数可相同), (1) 这两个数的最小公倍数最大是多少? (2) 这两个数的最小公倍数最小是多少? (3) 这两个数的最大公约数最大是多少? (4) 这两个数的最大公约数最小是多少? 输入描述 第一行一个数 t t 表示数据组数 ( t = 10^4 t = 1 0 4)。 之后 t t 行,每行两个数 l, r l , r 表示一次询问( 1 \le l \le r \le 10^9 1 ≤ l ≤ r ≤ 1 0 9)。 输出描述 对于每个询问,输出一行四个数依次表示这四个问题的答案。(四个数间恰以一个空白字符隔开,每行行末不能有多余的空白字符。) 样例输入 1 2 2 3 1 2 样例输出 1 6 2 3 1 2 1 2 1 提示 对于值域范围 [2,3] [ 2 , 3 ]: lcm( 2 , 3 ) = 6 l c m ( 2 , 3 ) = 6 是最大的最小公倍数 lcm( 2 , 2 ) = 2 l c m ( 2 , 2 ) = 2 是最小的最小公倍数 gcd( 3 , 3 ) = 3 g c d ( 3 , 3 ) = 3 是最大的最大公约数 gcd( 2 , 3 ) = 1 g c d ( 2 , 3 ) = 1 是最小的最大公约数