对两个数求解对大公约数

对于这个最大公约数的球阀有两种,

第一种是:

自己手写规律:

int lcm(int a,int b)

{

int max = (a >= b?a:b),min = (a < b?a:b),i;

for(i = 1;;++i)

{

if((max * i) % min == 0)

{

return (max * i);

}

}

}

第二种是:

int LCM(int a, int b)

{

return a*b/GCD(a,b);

}

意思就是求解最大公约数就是求两个数的乘积再去除两个数的最小公约数。

时间: 2024-10-05 03:42:50

对两个数求解对大公约数的相关文章

XTUOJ ABK(求出A和B的第K大公约数)

Accepted : 21   Submit : 171 Time Limit : 1000 MS   Memory Limit : 65536 KB  题目描述 ABK是一个比A+B还要简单的题目,给出两个整数A,B,求出A和B的第K大公约数. 输入 第一行是一个整数N(N ≤ 10000),表示样例的个数. 以后每行一个样例,为3个整数A,B,K (1≤A,B≤109 , 1≤K≤10) 输出 每行输出一个整数d,表示A,B的第K大公约数 若没有第K大的公约数则输出-1. 思路:先求出a和b

第k大公约数(简单数学,逻辑转换)

遇到一个挺有意思的题目,要求两个数的第k大公约数(当然k=1时就是最大公约数),如 12 6 2 3 范围,a和b<=1e14,k<=1e9. 所以暴力是肯定不行的,这题的关键就是:能被最大公约数整除的一定也是两数的公约数!!这就可以做出来了 1 #include <iostream> 2 #include <string> 3 #include <algorithm> 4 #include <vector> 5 #include <cst

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

求两个数的最大公约数和最小公倍数 C语言

C程序设计第八章的第一道题目,求两个数的最大公约数和最小公倍数.需要注意一下几点: 1.最大公约数和最小公倍数间的关系: 设两个数是a,b最大公约数是p,最小公倍数是q 那么有这样的关系:ab=pq 所以q=ab/p.2.任意整数和0的公约数是该整数的所有约数,所以它们的最大公约数为该整数本身.3.碾转相除法:被除数%除数=余数,如果余数不为0,就让原来的除数做为被除数,余数作为除数,再进行运算 被除数%除数=余数,直到得到的余数为0为止,此时的除数就是最大公约数. #include <stdi

C语言求两个数中最大公约数

在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下: #include<stdio.h> int main() {      int num1,num2,temp,i;      scanf("%d%d",&num1,&num2);      if(num1>num2)      {            temp=num1

[BC]求数组中任意两个数的公约数,,多种情况取最大值

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string.h> using namespace std; int main() { int t,i,c,j,n,x,max,k; int a[100005]; scanf("%d",&t); for(j=1;j<=t;j++) {

快速寻找满足条件的两个数

时间:2014.07.17 地点:基地 ------------------------------------------------------------------------------------- 一.问题描述 给定一个数组,要求快速查找出其中的两个值,他们的和为一个给定的值. 比如给定数组:1 4 5 6 8  9,和给定值9,我们能找出4+5=9为所要的数值 ------------------------------------------------------------

算法总结之 一行代码求两个数的最大公约数

给定两个不等于0的整数M和N,求M和N的最大公约数 辗转相除法 思路:如果q和r分别是m除以n的商及余数,即m=nq+r, 那么m和n的最大公约数等于n和r的做大公约数!(递归) public class Test9 { public static int gcd(int m, int n){ return n==0 ? m : gcd(n, m%n); } public static void main(String[] args){ int x = gcd(15, 3); System.ou

c语言求两个数的最大公约数和最小公倍数

#include <stdio.h> int main() { // 两个数的最大公约数求法:最大公约数是这两个数之间公共最大的约数,我们可以先找到这两个数的比较小的数: int num1, num2, gys, gbs; scanf("%d,%d", &num1, &num2); int ji = num2*num1; if (num1>num2) { // 找到两个数较小的数 int temp; temp = num1; num1 = num2;