1. 程式人生 > 實用技巧 >數論基礎------質數板

數論基礎------質數板

#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",n)
#define slf(n) scanf("lld",&n)
#define plf(n) printf("lld\n",&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)
            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",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;
}