最大公因数
作者:互联网
求最大公因数三种方法
- 两个数m,n(默认m最大,m>n)
-
相减法
- 如果m > n,m = m - n;
- 如果m < n,n = n - m;
- 如果m == n,输出 m 或者 n,即为最大公因数
- m != n则循环上述操作
#include <stdio.h> int main(){ int m,n; scanf("%d%d",&m,&n); printf("The maxFactorNum of %d and %d is ",m,n); while (m!=n){ if(m>n) m = m - n; if(m<n) n = n - m; } printf("%d",m); return 0; }
-
辗转相除法
- c = 大数%小数,即c = m % n;
- c == 0,则输出n为最大公因数
- c != 0,a = b, b = c; 循环 c = m % n;
#include <stdio.h> void swap(int *a, int *b); int main(){ int m,n,r; scanf("%d%d",&m,&n); if(m<n) swap(&m,&n); printf("The maxFactorNum of %d and %d is ",m,n); while (n!=0){ r = m%n; m = n; n = r; } printf("%d.\n",m); return 0; } void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; }
-
最小数递减法
- 将m、n中的最小的数赋值给一个变量c
- 需要同时满足m%c == 0 && n%c == 0,输出c为最大公因数
- 如果不满足的话 c-- 循环上述操作
#include <stdio.h> void swap(int *a, int *b); int main(){ int m,n,c; scanf("%d%d",&m,&n); c = (m > n) ? n : m; printf("The maxFactorNum of %d and %d is ",m,n); for(;c>=1;c--){ if (m%c==0 && n%c==0){ printf("%d.\n",c); break; } } return 0; }
最小公倍数
m*n/p
两个数相乘除以最大公因数即可
标签:最大,int,scanf,d%,printf,main,公因数 来源: https://blog.csdn.net/weixin_43898789/article/details/121235506