• 数论板子——来自Loi_black


    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring> 
    using namespace std;
    const int maxn=200005;
    int prime[maxn];
    bool not_prime[maxn];
    int main()
    {
        int n,cnt=0;
        scanf("%d",&n);
        memset(not_prime,0,sizeof(not_prime));
        not_prime[1]=true;
        for(int i=2;i<=n;i++)
        {
            if(!not_prime[i])
                prime[++cnt]=i;
            for(int j=1;j<=cnt;j++)
            {
                if(prime[j]*i>n)    break;
                not_prime[prime[j]*i]=true;
                if(i%prime[j]==0) break;
            }
        }
        for(int i=1;i<=cnt;i++)
            printf("%d ",prime[i]);
        return 0;
    }
    
    //线性筛
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    int x,y;
    int exgcd(int a,int b)
    {
        if(!b)
        {
            x=1;
            y=0;
            return a;
        }
        else
        {
            int t;
            int d=exgcd(b,a%b);
            t=x;
            x=y;
            y=t-a/b*x;
            return d;
        }
    }
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        exgcd(a,b);
    //  cout<<__gcd(a,b)<<endl;
        cout<<x<<" "<<y<<endl;
        return 0;
    }
    
    //扩展欧几里得
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int gcd(int a,int b)
    {
        if(!b) return a;
        else return gcd(b,a%b);
    }
    int lcm(int a,int b)
    {
        return a/gcd(a,b)*b;
    }
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        cout<<gcd(a,b)<<" "<<lcm(a,b)<<endl;
        return 0;
    }
    
    //gcd+lcm
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int main()
    {
        long long n;
        scanf("%lld",&n);
        for(long long i=2;i<=n;i++)
        {
            while(n!=i)
            {
                if(n%i==0)
                {
                    printf("%lld*",i);
                    n=n/i;              
                }
                else break;
            }
        }
        printf("%lld",n);
        return 0;
    } 
    //分解质因数
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int a[233],mo[233];
    int gcd(int a,int b)
    {
        if(!b) return a;
        else return gcd(b,a%b);
    } 
    int lcm(int a,int b)
    {
        return a/gcd(a,b)*b;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i],&mo[i]);
        int ans=0,nowmo=1;
        for(int i=1;i<=n;i++)
        {
            int other=a[i],othermo=mo[i];
            if(othermo>nowmo)
            {
                swap(ans,other);
                swap(nowmo,othermo);
            }
            while(ans%othermo!=other)
                ans+=nowmo;
            nowmo=lcm(nowmo,othermo); 
        }
        printf("%d",ans);
    }
    //大数翻倍法
  • 相关阅读:
    IDEA中给main方法的args传参
    spark (Java API) 在Intellij IDEA中开发并运行
    Spark在Windows下的环境搭建
    Android Studio开发第三篇版本管理Git
    Android Studio开发第二篇创建新项目
    Android Studio开发第一篇QuickStart
    AndroidのInputFillter之按字符过滤长度,一个中文当两个字符
    DownloadProvider源码解析——与Volley对比
    EGit系列第三篇——远程提交代码
    WP8.1学习系列(第二十七章)——ListView和GridView入门
  • 原文地址:https://www.cnblogs.com/ZDHYXZ/p/7636662.html
Copyright © 2020-2023  润新知