两种方法求最大公约数最小公倍数

<pre name="code" class="cpp">/*
*coyright(c)2014 龙城无泪
*All rights reserved
*文件名称 digui.c
*作者:封尘之魂
*完成日期:20141108
*版本号V1.0
*问题描述:求两个整数的最大公约数最小公倍数
*输入描述:输入两个整数
*输出描述:成功输出最大公约数最小公倍数
*/
#include<stdio.h>
int main()
{int m,n,q,t,j,k;
scanf("%d%d",&m,&n);
j=m;k=n;if(m<n)//比较大小
{t=m;
m=n;
n=t;
}
q=m%n;
while(q)//辗转相除法
 {m=n;
n=q;
q=m%n;
}
printf("%d %d",n,j*k/n);
}



第二种循环
#include<stdio.h>
int z(int a, int b)
{
return b==0?a:z(b, a%b);//递归判断
}
int main()
{
int a,b,m;
scanf("%d%d",&a,&b);
m=z(a,b);
printf("%d %d", m,a*b/m);

}
心得:一般来说用循环解决的问题都能用递归解决  要多运用递归来解决循环的问题来锻炼自己的思维问题
方法:代替  要熟练的掌握替换之法 把没用过量赋值给用过的量,实现自己想要达到的目标

时间: 2024-10-29 04:41:55

两种方法求最大公约数最小公倍数的相关文章

两种方法求丑数

我们把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 方法1 : 暴力破解,逐个判断 代码: <pre name="code" class="cpp">#include <iostream> #include <vector> using namespace std; //判断是否是丑数 bool isUgly(int index){ while(index % 2

HDU 1013 Digital Roots(两种方法,求数字根)

Digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 67949    Accepted Submission(s): 21237 Problem Description The digital root of a positive integer is found by summing the digits of

归并排序,树状数组 两种方法求逆序对

我们知道,求逆序对最典型的方法就是树状数组,可是另一种方法就是Merge_sort(),即归并排序. 实际上归并排序的交换次数就是这个数组的逆序对个数,为什么呢? 我们能够这样考虑: 归并排序是将数列a[l,h]分成两半a[l,mid]和a[mid+1,h]分别进行归并排序,然后再将这两半合并起来. 在合并的过程中(设l<=i<=mid,mid+1<=j<=h).当a[i]<=a[j]时.并不产生逆序数:当a[i]>a[j]时.在 前半部分中比a[i]大的数都比a[j]

Math01: 两种方法求下三角矩阵的逆

方法一:单位矩阵消元 1 clear; 2 n = 500; 3 A = zeros(n,n); 4 for j = 1:n 5 for i = j:n 6 A(i,j) = (i + j)^2; 7 end 8 end 9 C = A; 10 B = eye(n); 11 12 for i = 1:(n-1) 13 B(i,:) = B(i,:)/A(i,i); 14 A(i,:) = A(i,:)/A(i,i); 15 for j = (i+1):n 16 B(j,:) = B(j,:) -

Java编程:用两种方法求输入正整数的位数。

import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //把整数n转换为字符串求其长度 int len = Integer.toString(n).length(); System.out.println("用字符串的方式求其长度len="+len);

字符串操作1 - 递归与非递归两种方法求字符串长度

1 //递归求字符串的长度 2 int RecurseLength(const char *str) 3 { 4 if(str == NULL || *str == '\0') 5 return 0; 6 7 if(*str == '\0') 8 return 0; 9 return RecurseLength(str+1) + 1;//返回当前字符数,再递归处理下一个字符 10 } 11 12 13 14 15 16 //非递归求字符串长度 17 int NonRecurseLength(co

两种方法求单链表逆序

1 递归,非常easy 代码: #include<iostream> using namespace std; typedef struct node{ int data; struct node * pNext; }Node ,*pNode; void createNode(pNode & pHead){ int temp; scanf("%d",&temp); pNode p,q; bool isFirst = true; while(temp){ if

Java编程:用三目运算符和交换两种方法求三个数中的中间数字。

import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a =sc.nextInt(); int b =sc.nextInt(); int c =sc.nextInt(); int t=0; if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; }

除法求模中求逆元的两种方法

今天下午还是有点闲的,不想刷题,不想补题,突然想起昨天的training 3里I题涉及到除法取模的问题,就来总结一下 首先对于模运算来说,是没有对于除法的取模的(即没有(a/b)%mod==a%mod/b%mod),但是在很多题目中都涉及到除法取模,所以就必须要了解或者掌握,对于除法取模以(a/b)%mod来说,我们首先需要得到b的逆元,根据逆元的定理 对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元. 然后就是求逆元的两种方法. 第一种方法就是比较普遍的,也是挺基础的,就是