质数-试除法

2020-08-04  本文已影响0人  dachengquan

质数

质数的定义:若一个正整数无法被1和他自身除外的任意自然数整除,则称该数为质数,否则为合数。

0和1不是质数也不是合数
质数的数量:在整个自然数集合中,质数的数量不多,分布比较稀疏,对于一个足够大的整数N,不超过N的质数大约N / \ln N个每\ln N个数中大约有一个质数。

试除法

试除法用于解决质数的判定给出一个数n,判定n是不是质数。
定理:若一个正整数N为合数则存在一个能整除N的数T,其中2 \leq T \leq \sqrt{N}
证明:因为N是合数,所以一定存在一个数M能整除N,并且2 \leq M \leq \sqrt{N}
反证法,假设上面命题不成立,不存在这样的M,那么M一定\sqrt{N}+1 \leq M \leq N-1。因为M能整除N所以N/M也能整除N,并且2 \leq N/M \leq \sqrt{N},令T=N/M存在这样数使得假设不成立,原命题成立。
我们只需要扫描2~\sqrt{n}直接的所有整数,依次检查他们能否整除N,如果都不能N是质数,否则N是合数。

bool get_prime(int n){
    if(n<=1)return false;
    for(int i = 2;i<=n/i;i++){
        if(n%i==0)return false;
    }
    return true;
}
上一篇下一篇

猜你喜欢

热点阅读