欧基米得公式--减治

 1 #include<stdlib.h>
 2 #include<stdio.h>
 3 void ojmd(int *a,int *b);
 4
 5 void ojmd_dg(int *a,int *b);
 6
 7 int main(void){
 8     int a=12;
 9     int b=6;
10     ojmd(&a,&b);
11
12     a=12;
13     b=10;
14     ojmd_dg(&a,&b);
15     return 0;
16 }
17
18 void ojmd_dg(int *a,int *b){
19     int r=*a%*b;
20     if(r==0){
21         printf("%d\n",*b);
22         return ;
23     }else{
24         ojmd(b,&r);
25     }
26 }
27
28 void ojmd(int *a,int *b){
29     int r=*a%*b;
30     while(r!=0){
31         *a=*b;
32         *b=r;
33         r=*a%*b;
34     }
35     printf("%d\n",*b);
36 }
时间: 2024-12-20 05:08:02

欧基米得公式--减治的相关文章

减治求有重复元素的全排列

求n个元素的全排列的所有解可以用减治法:每次拎出一个数做前缀,对剩下的元素再求全排列,直至只剩一个元素.代码源自<算法分析与设计(王晓东)>,复杂度O(n2) 1 //输出k~m的所有全排列 2 void perm(int k,int m) 3 { 4 if(k==m) 5 { 6 for(int i=0;i<=m;i++) 7 printf("%d ", list[i]); 8 printf("\n"); 9 }else 10 { 11 for(

2.3将英尺转化为米数.py

# -*- coding: utf-8 -*- """ Created on Sun Apr 22 16:20:42 2018 @author: MyPC """ def main(): ''' 将英尺转化为米数. 公式: 一英尺等于0.305米 ''' feet = eval(input("input feet:")) meters = feet*0.305 print("%.2f feet is %.4f met

分治法(一)

这篇文章将讨论: 1) 分治策略的思想和理论 2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性. 说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴.由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:1,大整数乘法   2,矩阵乘法的分治策略   3,最近点对  4,凸包问题,请见下一篇. 好了,切入正题. --------------------------------------------

【2014年终总结】拼搏点缀时光,在你我最美的年华

日光西斜,留余晖温暖世界.这一日也要过去,像极了昨夜风霜,经一夜消融阳光初睐,终化作尘泥为春夏蓄积.2014年是丰收的一年,从CS到BS接纳了各种入门级别的软件课程,光顾了软考.自考开阔眼界,掺杂着英语囊收了这大学生涯作为学生的最后一段上课光景. 从年初的寒假开始软工文档,整日面对一页页的文字,内心实在是说不出的忧伤.一个需求文档.一个概要设计--写来写去就把自己给写进去了,等到自己带徒弟才醒悟到这么简单的东西哪用得着死乞白赖的扣着,本来没有什么项目经验,再怎么写在一定程度上也只是纸上谈兵.对于

我的算法学习之路

关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口--况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的. 这篇文章讲了什么? 我这些年学习数据结构和算法的总结. 一些不错的算法书籍和教程. 算法的重要性. 初学 第一次接触数据结构是在大二下学期的数据结构课程.然而这门课程并没有让我入门--当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾--反正最后考试划个重点也能过,于是这门整个计算机专业本

设计模式:(5)装饰模式

装饰模式: 顾名思义,就是装饰,比如手机套,用来装饰手机,但是,作为手机套的实现是不影响手机的,手机套就像一个装饰器.在比方,相框,相框花边,他们都是为了给相片添加新的额外的功能,但是这种功能本身不影响相片的性质. 行为模式 意图: 动态给一个对象添加额外的职责.就增加功能而言,装饰模式相比生成子类更为灵活. 比生成子类更灵活,确实,相比用继承方式去添加职责,装饰器模式表现非常灵活. 比如这样的例子,流操作,一开始有文件流和网络流,如果用继承的方式,我想得这样写: class Stream{ p

java实现——8硬币问题(算法)

代码看着有点乱,有点复杂!单步调试一下其实不复杂!当然前提是要搞清楚算法的思想! package yxd.sf.eightcoins; public class EightCoins { public static int compareTo(int[] coins, int[] left, int[] right) { int leftTotal = 0; int rightTotal = 0; int fakeCoin = 0; int coinsSize = 0; if (coins.le

程序员必读书单

作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文地址:http://www.cnblogs.com/figure9/p/developer-reading-list.html 关于 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读.旨在成为最好最全面的程序员必读书单. 前言 Reading makes a full man; conference a ready man; and writing

geohash-net实现

基于c#语言 geohash算法基本实现源码,参见: https://github.com/sharonjl/geohash-net , 源码中具体包含如下方法: String CalculateAdjacent(String hash, Direction direction):               //根据指定hash码,获取相邻的上下左右矩形框hash码 double[] Decode(String geohash):