博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【20181209】C++求最大公约数
阅读量:4176 次
发布时间:2019-05-26

本文共 1613 字,大约阅读时间需要 5 分钟。

  今天早上做了算法题,其中一道如下所示:

   你需要在1s内算出答案。
   题目如下:
   给出正整数n,求a+b的最大值
   其中a,b为正整数,a<=n且b<=n且gcd(a,b)=1
   ps:gcd是最大公约数
   >>>>对于50%的数据,n < 1000
   >>>>对于100%的数据,n < 1亿
  做的过程中也没由考虑时间、大整数这些,先把代码贴下来记住吧。

#include 
#include
using namespace std; int main() { DWORD dwStart = GetTickCount(); int n; cin >> n; int flag = 0; int max = 0; for (int a = 1; a <= n; a+=2) //因为两个偶数的最大公约数一定不是1,所以这里每次循环后a+=2, b+=1。 { for (int b = 1; b <= n; ++b) { for (int k = 2; k <= min(a, b); ++k) //求最大公约数 { if (a % k == 0 && b % k == 0) { flag = 1; break; } } if (flag == 0 && max < a+b) { max = a+b; } } } cout << max << endl; DWORD dwTime = GetTickCount() - dwStart; cout << dwTime << endl; return 0; }

  先不考虑代码,梳理一下知识点:

  一、求最大公约数、最小公倍数

  1、最小公倍数

  如有两个数x、y,则x * y = 最大公约数 * 最小公倍数

  2、最大公约数

  ①辗转相除法:

  在这里插入图片描述

/*非递归解法*/int gcd(int x, int y)			//最大公约数:greatest common divisor{	int z = y;	while (x % y != 0)	{		z = x%y;		x = y;		y = z;	}		return z;}/*递归解法*/int gcd(int a, int b){	return b ? gcd(b, a%b) : a;}

  ②辗转相减法:

在这里插入图片描述

int gcd(int a, int b){	while (a != b)	{		if (a > b)		{			a = a-b;		}		else		{			b = b-a;		}	}		return a;}

  ③穷举法:

在这里插入图片描述

int gcd(int x, int y){	int temp = min(x, y);	while (!(x%temp == 0 && y%temp == 0))	{		--temp;	}		return temp;}

  二、测试时间

  这大概是我一直不明白的问题,每次查来查去,每次也理不清什么。自测的结果总是让人感觉怪怪的(感觉时间数字和单位不一致)。这次也贴一个今天早上找的一篇博客的链接:

  三、大整数

  具体会有大整数的加减乘除各种运算,今天早上的练习很多都是这方面的,要梳理强化!大整数应该是一个考点的方向的,先把加减乘除最基本的弄好!

  也是先贴一个博客的链接:
  之前看书,有大整数的乘法,用分治法实现,这周也要尽量补上!

  Ps:这次做题,关于图、网的还是就那样空了,也没思考。要先把书上的图这一章的好好消化一下,之后重点练习!

  And,纪念一下第一次用Markdown写博客,哈哈哈太好玩了,确实很方便!~

转载地址:http://zvtai.baihongyu.com/

你可能感兴趣的文章
XHProf-php轻量级的性能分析工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
[转]C语言printf
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
vue项目打包后无法运行报错空白页面
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>