• C++实现求N个数的最大公约数和最小公倍数


    算法实现:

    #include <iostream>
    using namespace std;
    
    int divisor(int a,int b);
    int ndivisor(int *a,int n);
    int multiple(int a,int b);
    int nmultiple(int *a,int b);
    
    int main()
    {
        cout<<"请选择计算的数据数量:"<<endl;
        int n;
        cin>>n;
        while(cin.fail()){
            cout<<"Wrong, you have inputed a wrong type data
    "<<endl;
            cin.clear();//清除错误标记,重新打开输入流,但是输入流中依旧保留着之前的不匹配的类型
            /*cin.sync();*///清除cin缓存区的数据。
            while(cin.get() != '
    '){
                continue;
            }
            cout<<"please input again"<<endl;
            cin>>n;
        }
        cout<<"请输入"<<n<<"个数据:"<<endl;
        int a[n];
        for(int m=0;m<n;m++)
            cin>>a[m];
        int div=ndivisor(a,n);
        int mul=nmultiple(a,n);
        cout<<"上述"<<n<<"个数字的最大公约数为:"<<div<<endl;
        cout<<"上述"<<n<<"个数字的最小公倍数为:"<<mul<<endl;
        return 0;
    }
    
    int divisor(int a,int b)//两个数求最大公约数
    {
        int temp;
        if(a<b)
        {
            temp=a;
            a=b;
            b=temp;
        }
        while(b!=0)
        {
            temp=a%b;
            a=b;
            b=temp;
        }
        return a;
    }
    
    int ndivisor(int *a,int n)//n个数求最大公约数
    {
        if(n==1)
            return(*a);
        return divisor(a[n-1],ndivisor(a,n-1));
    }
    
    int multiple(int a,int b)//求最小公倍数
    {
        int divisor(int a,int b);
        int temp=divisor(a,b);
        return(a*b/temp);
    }
    
    
    int nmultiple(int *a, int n)//求n个数的最小公倍数
    {
        if (n == 1)
            return *a;
        else
            return multiple(a[n-1], nmultiple(a, n-1));
    }
    

      

    天晴了,起飞吧
  • 相关阅读:
    内存映射mmap的几个api及其使用
    hiredis的安装
    Linux 下解压大全
    redis内存数据库C客户端hiredis API 中文说明
    C/C++使用MySQL
    搜索引擎的缓存(cache)机制
    快速排序(QuickSort)
    冒泡排序
    spring核心之AOP学习总结一
    Spring学习总结六——SpringMVC一
  • 原文地址:https://www.cnblogs.com/jianqiao123/p/12219086.html
Copyright © 2020-2023  润新知