数论篇1——素数问题

素数的一些神奇性质

(1)所有大于$2$的素数都可以唯一地表示成两个平方数之差。

证明如下:

(2)麦森数

如果$2^{p}-1$是素数,其中指数$p$一定也是素数。

证明如下:

原命题的逆否命题为:如果$p$不是素数,则$2^{p}-1$不是素数。

如果p不是素数,可以假设 $p=m\cdot n$

 $2^p-1=(2^m)^{n}-1=(x-1)(x^{n-1}+x^{n-2}+...+1), x=2^m$

 逆否命题成立,原命题成立。

拓展:

求$2^{p}-1$的位数,$2^{p}-1$和$2^{p}$的位数是相同的,因为$2^{p}$最后一个一定不为$0$,可以直接求$2^{p}$的位数。设$k=2^{p}$,根据$10^n$的位数为$n+1$,只要想办法把$k=2^{p}$中的底数$2$转换成$10$,指数$+1$就是位数了。根据$10^{log_{10}{2}}=2$,于是$k=(10^{log_{10}{2}})^p$,把$p$乘进去就是$k=10^{p\cdot log_{10}{2}}$,所以位数就是$p\cdot log_{10}{2}+1$(cmath中自带log10()函数)

(3)当$n$为大于$2$的整数时,$2^{n}+1$和$2^{n}-1$两个数中,如果其中一个数是素数,那么另一个数一定是合数。

证明如下:

$2^n$一定不能被$3$整除

如果$ (2 ^ {n} \% 3 == 1)$,则一定有:$2 ^{ n} - 1 \% 3 == 0$;

如果 $(2 ^ {n} \% 3 == 2)$,则一定有:$2 ^{ n} + 1 \% 3 == 0$;

也就是说,$2^{n}+1$和$2^{n}-1$中至少有一个是合数。

(4)大于$3$的素数一定是$6$的倍数$ ±1 $

证明如下:

素数$±1$必然是偶数,一定可以被2整除

素数除以$3$,如果余$1$,减$1$后余$0$,;如果余$2$,加$1$后余$0$,即可以素数$±1$后被$3$整除

结合上面两行,素数$±1$,一定可以被$6$整除

素数的判定

试除法

(1)普通

复杂度:$O(n)$

bool prime(int x){
   //判断x是不是质数,是返回true,不是返回false 
    if(x <= 1) return false; 
    for(int i = 2; i < x; i ++){
        if(x % i == 0) return false;
    }
    return true;
}

(2)改进

复杂度:$O(\sqrt{n})$

bool prime(int x){
    if(x <= 1) return false; 
    for(int i = 2; i <= sqrt(x); i ++){
        if(x % i == 0) return false;
    }
    return true;
}
//用乘法可以避免根号的误差
bool prime(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值