1.欧几里得算法,也叫辗转相除,简称 gcd,用于计算两个整数的最大公约数 定义 gcd(a,b) 为整数 a 与 b 的最大公约数 引理:gcd(a,b)=gcd(b,a%b) 证明: 设 r=a%b,c=gcd(a,b); 则 a=cx,b=cy,其中x,y互质 r=a%b=a-pb=cx-cp ...
分类:
编程语言 时间:
2019-04-08 21:51:05
阅读次数:
233
数学是oi的重要基础,所以说数论在oi中占据了非常重要的地位,因此,学好数学,对于一个oier来说也是非常重要的。 oi中的数学,其实也就和数竞并没有什么区别。 欧几里得法辗转相除法求最大公约数 我们可以证明gcd(a,b)=gcd(b,a%b),也就是我国古代数学智慧的结晶,更相损减术。并且一直递 ...
分类:
编程语言 时间:
2019-04-06 23:07:09
阅读次数:
191
PTA 求最大公约数:辗转相除法 求最小公倍数:两数相乘除以最大公约数 ...
分类:
其他好文 时间:
2019-04-05 16:58:09
阅读次数:
214
一、最大公约数与最小公倍数 最大公约数,属于数论所探究的内容。 最大公约数可以通过下面的三种方法求出来。 最小公倍数呢,它与最大公约数的乘机为所求数之积。 比如求 x,y的最大公约数和最小公倍数 记住这个公式: x*y=最小公倍数*最大公约数 二、求最大公约数的三种方法 ①辗转相除法 算法流程图 i ...
分类:
其他好文 时间:
2019-04-05 12:42:52
阅读次数:
1190
伪代码是很像编程语言但又不是真正的编程语言的一种文本。伪代码提供了代码实现算法过程中会用到的结构和细节,同时又不与某种特定的编程语言联系在一起。希望你能把这些伪代码翻译成真正的代码,然后在你的计算机上执行。下面的代码片段展示了计算两个整数的最大公约数(GCD)算法的伪代码示例: 取模操作取模操作,在 ...
分类:
其他好文 时间:
2019-04-01 12:56:09
阅读次数:
257
题目链接 题意 其实就是求 $$\sum\limits_{i=1}^n\sum\limits_{j=1}^ngcd(i,j)$$ 思路 建议先看一下此题的一个弱化版 推一下式子 $$\sum\limits_{i=1}^n\sum\limits_{j=1}^ngcd(i,j)$$ $$= \sum\l ...
分类:
其他好文 时间:
2019-03-30 20:08:10
阅读次数:
196
int gcd(int a,int b) { return b == 0? a : gcd(b,a%b); } //返回最大公约数 //ax+by=gcd(a,b),求x,y int exgcd(int a,int b,int &x,int &y) { int d = a; if(b != 0) { ...
分类:
其他好文 时间:
2019-03-26 13:18:59
阅读次数:
155
(6)将100~200之间的素数打印出来. 素数的公约数除了一就是它本身;如果这个数字在遍历二到它本身之间出现能被整除的情况就代表这个数不是素数; ...
分类:
编程语言 时间:
2019-03-25 14:54:44
阅读次数:
172
第一种(for循环)#include<stdio.h>#include<stdlib.h>intmain(){inti,min,k,a,b;printf("请输入两个整数:\n");scanf("%d%d",&a,&b);if(a>b)//此处ifelse语句可以删除(只是为了少执行几步程序)min=b;elsemin=a;for(i=min;i>
分类:
编程语言 时间:
2019-03-20 20:36:57
阅读次数:
1924
问题描述 小ww最近仔细研究了公约数,他想到了以下问题:现有nn个正整数,从中选k(2≤k≤n)k(2≤k≤n) 个,设这kk个数的最大公约数为gg,则这kk个数的价值为k×gk×g。求这个价值的最大值。 小ww 当然知道答案了。现在他想考考你,你能很快回答出来吗? 输入格式 第一行,一个整数nn。 ...
分类:
其他好文 时间:
2019-03-20 01:18:01
阅读次数:
147