最大公约数简便算法_求最大公约数的4种算法

for(z=0; z<10000000; z++) 循环只是为了增加程序的运行时间,

让我们体会算法的时间复杂度。

算法一:短除法

想法,采用短除法找出2个数的所有公约数,将这些公因子相乘,结果就是2个数的最大公约数。【找公因子,只能使用蛮力法】

#include

#include

void main()

{

int m=28,n=72;

int i,f=1;

int z;

clock_t start,finish;

double duration;

start= clock();

for(z=0; z<10000000; z++)

{

for(i=2;i<=m&&i<=n;)

{

while(m%i==0&&n%i==0)

{

f*=i;

m/=i;

n/=i;

}

i++;

}

}

finish=clock();

duration=(double)(finish-start)/CLOCKS_PER_SEC;

printf("time=%lf seconds\n",duration);

printf("result=%d\n",f);

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

算法二:辗转相除法

辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

#include

#include

void main()

{

int m=28,n=72;

int i,f=1;

int z;

clock_t start,finish;

double duration;

start= clock();

for(z=0; z<10000000; z++)

{

if(m

{

i=m;

m=n;

n=i;

}

i=m%n;

while(i)

{

m=n;

n=i;

i=m%n;

}

f=n;

}

finish=clock();

duration=(double)(finish-start)/CLOCKS_PER_SEC;

printf("time=%lf seconds\n",duration);

printf("result=%d\n",f);

}

time=0.037000 seconds

result=4

Press any key to continue

算法三:蛮力法,从2个公约数中较小的数开始递减,二个公约数除以它,可以同时除尽,变是最大公约数,我想的,很笨的一种。

#include

#include

void main()

{

int m=28,n=72;

int i,f=1;

int z;

clock_t start,finish;

double duration;

start= clock();

for(z=0; z<10000000; z++)

{

f=m>n?n:m;

for(i=f;i>0;i--)

{

if(m%i==0&&n%i==0)

{

f=i;

break;

}

}

}

finish=clock();

duration=(double)(finish-start)/CLOCKS_PER_SEC;

printf("time=%lf seconds\n",duration);

printf("result=%d\n",f);

}

time=0.992000 seconds

result=4

Press any key to continue

算法四:辗转相减法

辗转相减法是一种简便的求出两数最大公约数的方法。(更相减损术)辗转相减法(求最大公约数),即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数。例如 :两个自然数35和14,用大数减去小数,(35,14)->(21,14)->(7,14),此时,7小于14,要做一次交换,把14作为被减数,即(14,7)->(7,7),再做一次相减,结果为0,这样也就求出了最大公约数7

#include

#include

void exchange(int *m,int *n);

void main()

{

int m=28,n=72;

int i,f=1;

int z;

clock_t start,finish;

double duration;

start= clock();

if(m

exchange(&m,&n);

for(z=0; z<10000000; z++)

{

i=m-n;

while(i)

{

if(i>n)

{

m=i;

}else

{

m=n;

n=i;

}

i=m-n;

}

f=m;

}

finish=clock();

duration=(double)(finish-start)/CLOCKS_PER_SEC;

printf("time=%lf seconds\n",duration);

printf("result=%d\n",f);

}

void exchange(int *m,int *n)

{

int temp;

temp=*m;

*m=*n;

*n=temp;

}

time=0.020000 seconds

result=4

Press any key to continue

看看4个算法的运行时间,还是我自己想的算法时间最久,来一个

大神拯救我吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 编写代码_如果您在2015年编写过Java代码-这是您不容错过的趋势

java 编写代码去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中&#xff0c;我们回顾了构成我们2015年对话的5个主题和新发展。与其他许多年终总结保持较高水平的不同&#xff0c;我们将做一个更实际的操作不用流行语 。 好吧&#xff0c;没有太多*流行语。 与往常一样…

java自动生成合同_Java 7和Java 8之间的细微自动关闭合同更改

java自动生成合同Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是&#xff0c;静态代码分析工具可以检测到资源泄漏。 例如&#xff0c;Eclipse&#xff1a; 当您具有上述配置并尝试运行以下程序时&#xff0c;您将收到三个警告&…

Python学习(1)

1.str字符串操作 len(str) 计算字符串长度 str.replace(xxx,xxxx) 替换指定字符 str.upper()字符串转大写 str.lower()字符串转小写 str.strip()删除左右多余的空格 str.lstrip()删除左边多余的空格 str.rstrip()删除右边的空格 format(a,b,c) 传参显示 2.索引 out hello wo…

opencv求两张图像光流_光流(optical flow)和openCV中实现

转载请注明出处&#xff01;&#xff01;&#xff01;光流(optical flow)和openCV中实现光流的概念&#xff1a;是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度。是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一…

swarm 和 k8s_Wildfly Swarm,朝着成熟和一小部分贡献

swarm 和 k8s我最近关注的项目之一是Wildfly Swarm 。 最终&#xff0c;在今年的JBoss BOF中的Devoxx期间&#xff0c;由于考虑与著名的Docker Swarm发生冲突&#xff0c;我的要求没有考虑更改项目名称。 那么什么是Wildfly Swarm&#xff1f; 简而言之&#xff0c;就是Wildfl…

python socket多线程 获取朋友列表_python socket多线程通讯实例分析(聊天室)

本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;#!/usr/bin/evn python"""这是一个Socket多进程的例子(聊天服务端)"""import socketimport threading# 处理中文数据用的encoding "GBK…

8进5预警处理

题&#xff1a;在图像处理中&#xff0c;如果发现有危险标为1&#xff0c;否则标为0. 在图像处理中可能出现误报。因此采用8进5的方法&#xff0c;即前8里面有5个预警&#xff0c;我们就返回预警信息. #include <iostream> #include<queue> using namespace std;q…

facelets_Java EE 8中的MVC 1.0:使用Facelets入门

faceletsMVC 1.0是一个基于动作的Model-View-Controller Web框架&#xff0c;它将成为将来的Java EE 8的一部分。它将与基于组件的JSF框架并存&#xff0c;并提供了构建面向HTML javascript的应用程序的替代方法完全控制网址。 这篇文章总结了使用Facelets代替默认的JSP作为M…

python实现端口转发_python实现超简单端口转发的方法

本文实例讲述了python实现超简单端口转发的方法。分享给大家供大家参考。具体如下&#xff1a;代码非常简单&#xff0c;实现了简单的端口数据转发功能&#xff0c;用于真实环境还需要再修改一下。代码如下:#tcp serverimport sockethost 127.0.0.1 #Local Server IP…

C++防卫式编程

#ifndef XXXXXX #define XXXXXX //代码段 #endif 此段代码保证了&#xff0c;在多重包含情况下不会重复包含。 1.如果已经定义了defineXXX则代码段不会被编译&#xff0c;反之则会编译

storm apache_Apache Storm的实时情绪分析示例

storm apache实时情感分析是指处理自然语言文本&#xff08;或语音&#xff09;流以提取主观信息。 琐碎的用例用于构建推荐引擎或查找社交媒体趋势。 我选择了Apache Storm作为实时处理引擎。 Storm非常强大&#xff08;我们正在生产中使用它&#xff09;&#xff0c;并且非常…

怎么用python画圆的公式_怎么用python画圆

python中内置了许多第三方库&#xff0c;来帮助它完成各种功能。Turtle库就是Python语言中一个很流行的绘制图像的函数库(推荐学习&#xff1a;Python视频教程)Turtl库用于绘制线、圆、其他形状或者文本这个库被介绍为一个最常用的用来给孩子们介绍编程知识的方法库&#xff0c…

C++函数后置返回类型

//后置函数返回类型声明 auto func(int a, int b)->void; //后置函数返回类型定义 auto func(int a, int b)->void {return; }

嵌入式java基准测试_Java正则表达式库基准测试– 2015年

嵌入式java基准测试在尝试使Java在计算机语言基准游戏的regexdna挑战中排名第一时&#xff0c;我正在研究Java正则表达式库的性能。 我可以找到的最新网站是2010年的tusker.org 。因此&#xff0c;我决定使用Java Microbenchmarking Harness重做测试并发布结果&#xff08;破坏…

java决策树_【Java】决策树介绍和使用

现在生活中&#xff0c;越来越多的时候 需要进行判断和决策&#xff0c;因此关于怎么去判断和决策&#xff0c;需要根据一定的依据进行判断和决策&#xff0c;并不是凭空的按照自己的意愿去判断和决策&#xff0c;就比如举个例子&#xff1b; 假如甲同学准备结婚&#xff0c;但…

C++ 【随想录】(五)C 文件操作

#include<iostream> #include<cstdio> using namespace std;int main() {FILE *fp1 NULL; //指向源文件FILE *fp2 NULL; //指向目的文件char *byBuffNULL; //缓存int fileBytes 0; //文件大小const char* pSrc "M3.264";const char* pDest "M…

stackoverflow_Stackoverflow的见解:投票最多的是Spring 4问题

stackoverflow在Stackoverflow上对Spring 4问题进行投票和回答最多的是什么&#xff1f; 以下是最常见的五个问题和解答。 Spring中的 Component&#xff0c; Controller&#xff0c; Repository和Service批注有什么区别&#xff0c;它们可以互换使用还是具有特定功能&#xf…

java 编译顺序_关于java中一次编译多个源文件时的编译顺序的问题

为了节省回答者的时间我先把问题提出来&#xff0c;再针对问题案例作详细说明。如果能不用看问题案例就回答出来当然省时。我的问题是java里面&#xff0c;用命令行提示符环境编译源文件的时候&#xff0c;加上*通配符...为了节省回答者的时间我先把问题提出来&#xff0c;再针…

宏定义细节

#define PI(a,b) ab //分析 /* PI(a,b)a,b是参数 后面的ab进行运算 返回值作为PI的宏定义

libgdx和unity_libgdx和Kotlin –类[2D平台原型]

libgdx和unity这篇文章是libgdx和Kotlin文章的后续文章。 我已经决定开发一个简单的2D平台程序的原型&#xff08;沿着我的早期文章中的Star Assault进行介绍&#xff09;&#xff0c;但是我一直在使用和学习Kotlin&#xff0c;而不是Java。 对于本教程&#xff0c;该项目应处…