• 数论基础------质数板


    #include <iostream>
    #include <cstring>
    #include <string>
    #include <cmath>
    #include <cstdio>
    #include <stdio.h>
    #include <cstdlib>
    #include <algorithm>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    #include <iomanip>
    #define pub(n) push_back(n)
    #define pob(n) pop_back(n)
    #define sf(n) scanf("%d",&n)
    #define pf(n) printf("%d
    ",n)
    #define slf(n) scanf("lld",&n)
    #define plf(n) printf("lld
    ",&n)
    #define rep(i,a,b) for(int i = a; i <= b ; i ++ )
    #define pre(i,a,b) for(int i = a ; i >= b ; i --)
    #define ll long long
    #define PII pair<int,int>
    #define inf 0x3f3f3f3f3f3f3fll
    #define ull unsigned long long
    #define ios ios::sync_with_stdio(false),cin.tie(0)
    using namespace std;
    const int N = 510,mod=1e9+7;
    
    //determine whether it is a prime number
    bool is_prime(int n)
    {
        if(n<2) return false;
        for(int i=2;i<n/i;i++)  //O(sqrt(n))
        {
            if(n%i==0)
                return false;
        }
        return true;
    }
    
    void divide(int n)  // decompose prime factors
    {
        rep(i,2,n)
        {
            if(n%i==0)
            {
                int s=0;
                while(n%i==0)
                {
                    n/=i;
                    s++;
                }
                printf("%d %d",i,s);
            }
        }
    }
    
    //optimized divide code
    void optimized_divide(int n)
    {
        rep(i,2,n/i)
        {
            int s=0;
            if(n%i==0)
            {
                n/=i;
                s++;
            }
            printf("%d %d",i,s);
        }
        if(n > 1) printf("%d %d
    ",n,1);
        puts("");
    }
    
    int primes[N],cnt;
    bool st[N];
    //select primes of n numbers
    void get_primes1(int n) //olognlogn
    {
        rep(i,2,n)
        {
            if(!st[i])
            {
                primes[cnt++]=n;
                for(int j=i+i;j<=n;j+=i)
                    st[j]=true;
            }
        }
    }
    
    void get_primes2(int n) // 线性筛法
    {
        rep(i,2,n)
        {
            if(!st[i]) primes[cnt++]=i;
            for(int j=0;primes[j]<=n/i;j++)
            {
                st[primes[j]*i]=true;
                //当prime[j]一定是i的最小质因子
                if(i%primes[j]==0) break;
                //因此,prime[j]一定是
            }
        }
    }
    
    int main()
    {
        ios;
    }
    

      

  • 相关阅读:
    Super超级ERP系统---(1)总体设计
    推荐三款强大的Js图表库
    PHP session锁
    关于MVC的一些思考
    git 设置ssh无密码登录
    一个临时性页面的优化
    Redis系列三:Redis常用设置
    根据省份等地址获取经纬度,或根据经纬度获取地址信息
    Redis系列二:Redis支持的数据类型和使用方法(二)
    Redis系列二:Redis支持的数据类型和使用方法(一)
  • 原文地址:https://www.cnblogs.com/jxust-Biao/p/13353687.html
Copyright © 2020-2023  润新知