其他分享
首页 > 其他分享> > 一篇不大正经的关于数论的总结(未完

一篇不大正经的关于数论的总结(未完

作者:互联网

顶函数(\(\lceil {x} \rceil\))、底函数(\(\lfloor {x} \rfloor\)):

常称之为高斯(取整)函数。

定义:

顶函数:\(\geq {x}\)的最小整数。
底函数:\(\leq {x}\)的最大整数。
举个例子:

\(1.\lceil {1.5} \rceil=2\)
\(2.\lfloor {1.5} \rfloor=1\)
\(3.\lceil {-1.5} \rceil=-1\)
\(4.\lfloor {-1.5} \rfloor =-2\)

带余除法:

定义:

\(对于任意整数a,b(a\geq b,b\neq 0),\)\(存在q,r,满足a=qb+r(0\leq r \leq |b|),且q,r唯一\)
我们把a叫做被除数,b叫做除数,q叫做商,r叫做余数。
可以证明\(q=\lfloor \left (\frac {a}{b}\right )\rfloor,r=a-b\lfloor \left(\frac {a}{b} \right)\rfloor\)(证明如下)

\(\because这个是很显然的\)
\(\therefore q=\lfloor \left (\frac {a}{b}\right )\rfloor,r=a-b\lfloor \left(\frac {a}{b} \right)\rfloor\)

整除:

定义:如果\(a\)能把\(b\)除尽,余数为0,那么就说是\(b\)被\(a\)整除,即\(a|b\)。

整除的性质:

#include"bits/stdc++.h"
#include<time.h>
using namespace std;

#define N 10086

int a[N];

int n;

int cnt=0;

int main(void) {
    ios::sync_with_stdio(false);
    cin>>n;

    //clock_t start = clock();
    
    for(int i=1; i<=sqrt(n); ++i) {
        if(n%i==0) {
            a[++cnt]=i;
            if(n/i!=i) a[++cnt]=n/i;
        }
    }
    for(int i=1; i<=cnt; ++i) cout<<a[i]<<" ";
    
    //clock_t ends = clock();
    
    //cout<<"\n Running time: "<<(double)(ends - start)/ CLOCKS_PER_SEC;
    
    return 0;
}
2.倍数法:

如果更改题意,给出\(l,r\),要求求\(l-r\)之间的每个数的正约数集合。那么再用试除法,时间复杂度就为\(O(N\sqrt{N})\),变得有点恶心,特别是在\(N\)非常大的时候。譬如跑\(1-100000\)。消耗的时间如下:

运行代码如下:

#include"bits/stdc++.h"
#include<time.h>
using namespace std;

#define N 10086

int a[N];

int n;

int cnt=0;

int l,r;

int main(void) {
    ios::sync_with_stdio(false);
    cin>>l>>r;

    clock_t start = clock();

    for(int j=l; j<=r; ++j) {
        memset(a,0,sizeof(a));
        cnt=0;
//      cin>>n;
        for(int i=1; i<=sqrt(j); ++i) {
            if(j%i==0) {
                a[++cnt]=i;
                if(j/i!=i) a[++cnt]=j/i;
            }
        }
        for(int i=1; i<=cnt; ++i) cout<<a[i]<<" ";
        cout<<"\n";
    }
    
    clock_t ends = clock();

    cout<<"\n Running time: "<<(double)(ends - start)/ CLOCKS_PER_SEC;
    return 0;
}

标签:约数,because,正经,一篇,数论,int,cdots,right,therefore
来源: https://www.cnblogs.com/morbidity/p/10871967.html