题目:
给定两个自然数,求这两个数的最大公约数。
分析:
单看题目的话,非常简单,我们可以循环遍历自然数,如果能够整除两个自然数,就把这个数记下来,在这些记录中找到最大的一个。
但是这样做有几个
缺点:一是做除法计算量比较大,二是遍历所有自然数完全没有必要。另外,如果能够循环,还是不要递归,因为Python的函数递归最大栈空间是1
转载
2023-08-04 23:16:22
805阅读
PS:该处使用了辗转相除法来求最大公约数数据举例:其中“a mod b”是指取 a ÷ b 的余数。例如,123456 和 7890 的最大公因子是 6,这可由下列步骤看出: aba mod b12345678905106789051062784510627
转载
精选
2013-06-19 21:57:50
493阅读
#include "stdio.h"
int main()
{
int i,t,a,b;
scanf("%d%d",&a,&b);
if(a>b)
{
t=a;
a=b;
b=t;
}
for(i=a;i
原创
2015-12-02 14:22:38
192阅读
'''求两个数的最大公约数'''def gys(x,y): # 判断两个数字大小 if x>y: smaller = y bigger = x else: smaller=x bigger=y # case1:两个数可以整除 if bigger%smaller==0: return smaller ...
转载
2021-10-15 16:33:00
118阅读
2评论
#include<stdio.h>int main(){int m,n,c=0;printf("请输入\n");scanf("%d%d",&m,&n);while(m%n){int r=m%n;m=n;n=r;}printf("最大公约数为:%d\n",n); return 0; }
原创
2022-04-09 22:16:38
173阅读
int main()
{
int n = 0;
int m = 0;
int r = 0;
scanf("%d %d", &m, &n);
r = n % m;
while (m%n)
{
r = m % n;
m = n;
n = r;
}
printf("最大公约数为:%d", n);
}
原创
2023-07-22 19:20:33
104阅读
import java.util.Scanner;/** * 求3个正整数的最大公约数, 最小公倍数 */public class ThreeInt_Gongyue { static Scanner scanner = new Scanner(System.in)
原创
2022-05-04 18:19:15
111阅读
求最大公约数有两种方法:更相减损法,辗转相除法两种方法原理相同,辗转相除法更简洁1.更相减损法假设有两个数161和63,设它们的最大公约数为x161和63都能被x整除,则它们的差161-63=98也能被x整除,所以求161和63的最大公约数变成求98和63的最大公约数,且98和63的最大公约数仍然是x。98和63都能被x整除,则它们的差98-63=35也能被x整除,所以求98和63的最大公约数变成
原创
2023-05-12 23:32:40
90阅读
#include <stdio.h>
int main()
{
int i,j,n=0;
printf("请输入两个数:");
scanf_s("%d,%d", &i, &j); while (i % j )
{
n =
求两个数的最大公约数,有三种方法,分别是:短除法,辗转相除法,更相减损法。短除法: 运用短除法找到两个数的最大公约数,具体过程是逐步找出两个数的所有公约数,再把这些公约数累乘起来,就得到两个数的最大公约数。def func1():
a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
a1,b1 = a,b
t=
转载
2023-08-17 23:10:12
1500阅读
方法1: num_1 = int(input("输入一个数:"))
num_2 = int(input("输入另一个数:"))
if num_1 > num_2:
min = num_2
else:
min = num_1
for i in range(1, min+1):
if (num_1 % i == 0) and (num_2
转载
2023-06-15 11:17:29
323阅读
方法一 int mgcd(int a, int b){ int t; if(a<b) { a = a+b; b = a-b; a = a-b; } while(b) { t = b; b = a%b; a = t; } return a;} 方法二 int mgcd2(int a,int b){ if(b==0
原创
2022-07-12 11:57:53
23阅读
之前我也实现过最大公约数的求解,采用了一种近乎穷举的方式来实现的。一次坐火车的时候带着高德纳的《计算机编程艺术》第一卷看了下,英语退步的厉害没有看懂太多东西,倒是看到了一个求取最大公约数的算法。看完之后,一下子觉得自己之前的算法是多么差。 下面使用Python简单进行一下算法实现:defCommDevisor(m,n): r = m % n wh
原创
2021-07-08 15:46:38
112阅读
之前我也实现过最大公约数的求解,采用了一种近乎穷举的方式来实现的。一次坐火车的时候带着高德纳的《计算机编程艺术》第一卷看了下,英语退步的厉害没有看懂太多东西,倒是看到了一个求取最大公约数的算法。看完之后,一下子觉得自己之前的算法是多么差。 下面使用Python简单进行一下算法实现:defCommDevisor(m,n): r = m % n wh
原创
2022-03-11 14:08:39
99阅读
输入两个正整数m和n,求其最大公约数和最小公倍数。样例输入:49 14样例输出:7暴力方法1:#include <stdio.h>int main(){
原创
2022-10-21 16:28:40
35阅读
#include <stdio.h>
int main()
{
int big,sma,tmp;
printf("big=");
scanf("%d",&big);
printf("sma=");
scanf("%d",&sma);
if(big<sma)
{
&nbs
原创
2015-09-28 23:53:13
456阅读
点赞
#include<stdio.h>int main(){ int x,y,z; printf("请输入两个数:\n"); scanf("%d %d",&x,&y); if(x>y) { z=y; if(x%y==0) printf("最大公约数为:%d\n",y);&nb
原创
2015-09-29 10:38:11
607阅读
方法一繁琐#include<stdio.h>int main(){ int a; int b; while (1)//因为任何两个数都有最大公约数所以用死循环方式 { int f; f = a%b; if (f == 0) { printf("%d", b); break; } &nbs
原创
2015-10-03 18:54:57
387阅读
点赞
求两个数的最大公约数
原创
2015-11-04 20:55:36
352阅读
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%d", &a, &b);
if (a % b == 0)
{
if (a > b)
{
printf("%d\n", b);
}
else
{
printf("%d\n", a);
}
}
else
{
wh