首页 > 其他分享 >判断两个数的最大公约数

判断两个数的最大公约数

时间:2024-05-20 23:40:47浏览次数:24  
标签:判断 两个 cout int namespace while 最大公约数 a% main

常见

点击查看代码
#include <bits/stdc++.h>
using namespace std;

int gcd(int a,int b)
{
    return b?gcd(b,a%b):a;
}

int main()
{
    int a,b,c;
    while(1)
    {
        cout<< "输入两个数字求最大公约数"<<endl;
        cin>>a>>b;
        cout<<"最大公约数是";
        cout<<gcd(a,b)<<endl;;
    }
    return 0;

}

相减法

点击查看代码
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int a,b;
    while(1)
    {
        cout<< "输入两个数字求最大公约数"<<endl;
        cin>>a>>b;
        while(a!=b)
        {
            if(a>b)
                a=a-b;
            else
                b=b-a;
        }
        cout<<"最大公约数是";
        cout<<a<<endl;;
    }
    return 0;
}

穷举法

三个变量,a,b,c;
c=(a,b)两个变量中较小的那个。
然后a,b分别都与c相除,只要有一方不能被c整除,就继续循环,循环中c--,c逐次减少,直到a,b,都能同时被c整除,运行结束。

点击查看代码
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int a,b,c;
    while(1)
    {
        cout<< "输入两个数字求最大公约数"<<endl;
        cin>>a>>b;
        c=(a>b)?b:a;
        while(a%c!=0||b%c!=0)
        {
            c--;
        }
 
 
        cout<<"最大公约数是";
        cout<<c<<endl;;
    }
    return 0;
}

辗转相除法

1.将两整数求余 a%b = c
2.如果c = 0;则b为最大公约数
3.如果c != 0,则 a = b;b = c;继续从1开始执行
4.也就是说该循环的是否继续的判断条件就是c是否为0

点击查看代码
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int a,b,c;
    while(1)
    {
        cout<< "输入两个数字求最大公约数"<<endl;
        cin>>a>>b;
        c=a%b;
        while(c!=0)
        {
            a=b;
            b=c;
            c=a%b;
        }
 
        cout<<"最大公约数是";
        cout<<b<<endl;;
    }
    return 0;
}

标签:判断,两个,cout,int,namespace,while,最大公约数,a%,main
From: https://www.cnblogs.com/hedy77/p/18203081

相关文章

  • Linux 中 如何判断每一行的数据都是相同的
     001、Linux中如何判断每一行的数据都是相同的 [root@PC1test2]#lsa.txt[root@PC1test2]#cata.txt##测试数据aabbccaabbccaabbccaakkccaabbccaabbcc[root@PC1test2......
  • 判断使用的是 x11 还是 wayland
    date:2024-05-20之前的判断方式是运行命令echo"$XDG_SESSION_TYPE"来查看环境变量的值,如果返回的是wayland则说明用的wayland,如果返回的是x11说明用的x11。但是,如果返回的是tty则不能说明是哪个。例如通过ssh连接到使用x11的远程主机,会返回tty。ps如何判断......
  • oracle的非空判断
    oracle的非空判断参考:oracle的非空字符串判断-CSDN博客在oracle中,空字符串当null处理,所以想找到空字符串,就可以用isnull来获取获取非空字段,就直接用isnotnull来获取用“=''”或者“!=''”来作为条件的话,就会找不到结果......
  • 【每周例题】判断回文串
    判断回文串题目给你一个字符串 x ,如果 x 是一个回文字符串,返回 true ;否则,返回 false 。回文字符串是指正序(从左向右)和倒序(从右向左)读都是一样的。例如,aba 是回文,而 abc 不是。代码#include<bits/stdc++.h>#include<cstring>usingnamespacestd;intmain(){......
  • 数据结构学习笔记-判断是否为无向图
    判断是否为无向图问题描述:设图G用邻接矩阵A[n+1,n+1]表示,设计算法以判断G是否是无向图。【算法设计思想】遍历矩阵使用两层嵌套的for循环,外层循环变量......
  • 2024-05-18:用go语言,给定一个从 0 开始的字符串 s,以及两个子字符串 a 和 b,还有一个整数
    2024-05-18:用go语言,给定一个从0开始的字符串s,以及两个子字符串a和b,还有一个整数k。定义一个“美丽下标”,当满足以下条件时:1.找到字符串a在字符串s中的位置,且该位置范围为0<=i<=s.length-a.length。2.找到字符串b在字符串s中的位置,且该位置范围为0<=j......
  • 4-寻找两个正序数组的中位数
    题目:两个正序数组,找出他们的中位数(中间位置的数),算法的时间复杂度应该为O(log(m+n))。1.将两个数组组成一个新的数组,int[]allArry=newint[nums1.length+nums2.length];System.arraycopy(nums1,0,allArry,0,nums1.length);System.arraycopy(nums2,0,allArry,num......
  • R语言中判断数值是否带有小数点
     001、不为整数>a<-5.324>floor(a)==a##截断后不相等,说明带有小数点部分,即不为整数[1]FALSE 002、是整数>b<-324>floor(b)==b##截断小数点后仍然相等,说明是整数[1]TRUE 。......
  • Flink同步kafka到iceberg数据延迟,两个checkpoint后才可查询
    一、问题描述用户配置了高级参数很多,观察kafka增量数据不多,flink负载不高情况下两个checkpoint后才可查询到数据。  排查时hdfs有数据文件产生,但是mainfast文件中最新快照id没变化。 二、原因经腾讯排查,用户参数指定高级参数execution.checkpointing.unaligned:true引起......
  • js 判断数组中的所有值是否相同
    使用Set数据结构:将数组转换为Set,如果Set的长度为1,则说明数组中所有的值都相同。使用for循环:遍历数组,将每个元素与前面的元素进行比较,如果存在不同的元素,则说明数组中的所有值不相同。使用Array.prototype.every()方法:使用every方法遍历数组,判断数组中的每个元素是否......