素数的几个判断方法(小结)

0、如果是偶数(大于二的),就直接判断不是素数;

 

1、下面的模板,名字叫什么我不知道,代码百度的,可以过题;

bool Isprime(__int64 x){
    for(int i=2;i*i<=x;i++)
        if(x%i==0) return 0;
    return 1;
}

 

2、筛选法求出素数,打表出来就可以,最大到1000000应该可以吧,我做的题目都是这样。

 

3、网上搜到个人的说是:

/**
拉宾-米勒素性测试的算法

判断一个数p是否为素数(p首先得为大于等于2的正整数才有可能为素数),首先判奇偶,若
为偶数只有2为素数,若为奇数(这里可以考虑去掉 3甚至5的倍数),则先求出d。对于每一
个底a,让d不断乘以2直到为(p-1)/2,在此过程中(包括原本的d与d=(p-1)/2时的情况),
设t为 a的d次方模p的余数,(1)当t=-1时跳出,声明p有可能为素数(2)当t=1时,若d为
奇数,跳出声明p有可能为素数,否则跳出声明p必为合数 (3)当d=(p-1)/2时跳出,声明p
必为合数。

要判断n是否为素数,对于一定范围内的n,只要以一定范围内a为底就可以保证这是一个确定
性算法了。下面详细:

if n < 1,373,653, it is enough to test a = 2 and 3.
if n < 9,080,191, it is enough to test a = 31 and 73.
if n < 4,759,123,141, it is enough to test a = 2, 7, and 61.
if n < 2,152,302,898,747, it is enough to test a = 2, 3, 5, 7, and 11.

代码好长好长,我就懒得去看了,直接用第一个不就很好。。。

 

4、

bool Isprime(__int64 x){
    if(x>2&&x%2==0) return 0;
    for(int i=3;i<=sqrt(double(x));i+=2)
        if(x%i==0) return 0;
    return 1;
}

 

待更新;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值