美文网首页
算法笔记(7)| 数学问题(1)

算法笔记(7)| 数学问题(1)

作者: yzbkaka | 来源:发表于2019-08-09 16:12 被阅读0次

    1.最大公约数与最小公倍数

    1.最大公约数

    最大公约数是指正整数a和b中都能够除尽的最大的数。解决最大公约数是方法一般是基于欧几里得算法:gcd(a,b)=gcd(b,a%b)

    int gcd(int a,int b){
        if(b==0) return a;
        else return gcd(b,a%b);
    }
    

    2.最小公倍数

    最小公倍数是指正整数a和b中,都能被除尽的最小的数。解决该问题的是在最大公约数的基础上进行的。假设a和b的最大公约数为d,则二者的最小公倍数为ab/d

    2.分数

    1.分数的表示和化简

    1.分数的表示

    分数一般是采用创建一个结构体来表示,结构里面包含分数的分子和分母。

    struct Fraction{
        int up;  //分子
        int down;  //分母
    };
    
    2.分数的化简

    分数的化简主要满足三项规定:
    1)如果分母down为负数,那么令分子up和分母down都变为相反数
    2)如果分子up=0,则让down=1
    3)约分:求出up和down的最大公约数d,然后让分子和分母同时除以d

    Fraction reduction(Fraction result){
        if(result.down<0){
            result.up=-result.up;
            result.down=-result.down;
        }
         if(result.up==0){
            result.down=1;
        }
        else{
            int d=gcd(abs(result.up),abs(result.down));  //求解最大公约数
            result.up=result.up/d;
            result.down=result.down/d;
        }
        return result;
    }
    

    3.分数的输出

    对于分数的输出,需要注意以下几点:
    1)输出分数前,需要对其进行化简
    2)如果分数的分母为1,则表示该分数为整数,输出时直接输出分子即可
    3)如果该分数为真分数,则应该按照带分数的各式输出

    void showResult(Fraction r){
        r=reduction(r);  //化简
        if(r.down==1){
            printf("%d",r.up);
        }
        else if(abs(r.up)>abs(r.down)){
            printf("%lld %lld/%lld",r.up/r.down,abs(r.up)%r.down,r.down);
        }
        else{
            printf("%d/%d",r.up,r.down);
        }
    }
    

    3.素数

    1.判断素数

    bool isPrime(int a){
        int sqr=(int)sqrt(1.0*a);
        if(a==1) return false;
        for(int i=2;i<sqr;i++){
            if(a%i==0){
                return false;
            }
        }
        return true;
    }
    

    2.获取素数表

    const int maxn=101;
    int prime[maxn],pNum=0;
    bool p[maxn]={false};
    void Find_Prime(){
        for(int i=1;i<maxn;i++){
            if(isPrime(i)){
                prime[pNum++]++;
                p[i]=true;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:算法笔记(7)| 数学问题(1)

          本文链接:https://www.haomeiwen.com/subject/cnshjctx.html