求素数

Posted sumaywlx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求素数相关的知识,希望对你有一定的参考价值。

求证:任何一个大于3的质数加一或减一必然是6的倍数

  每三个连续的数之中必有一个是3倍数
  设这个质数叫a,a肯定为无为3的倍数的奇数(因为是个质数)
  那么a-1,a+1其中必有1个是3的倍数
  显然a-1和a+1都是偶数 即2的倍数
  所以其中必有一个为2的倍数且为3的倍数的数
  即有6的倍数

 

技术分享图片
#include<iostream>
using namespce std;
#define MAX_NUM  10000
int a[MAX_NUM+1];//isprime[MAX_NUM]
//nlogn
void is_prime_1(void){
    //memset(a,1,sizeof(a));//用for改写初始化
    for(int i=2;i<=MAX_NUM ;i++){
        a[i]=1;
    }
    for(int i=2;i<MAX_NUM;i++){
        if(a[i] == 1){
            for(int j=i*2;j<=N;j+=i){
                a[j]=0;
            }
        }


    }
}
//线性筛多开了一个存素数的数组吖
int a[MAXSIZE];//下标是素数,关注下标的含义,直接寻址哈希,统计性质
int prime[MAXSIZE];//存素数即a中的下标
int is_prime_2(){
    int index=0;
    memset(a,1,sizeof(mark));//简写,实际上只能初始化0,-1
    for(int i=2;i<MAXSIZE;i++){
        if(a[i]==1){
            prime[index++]=i;

        }
        for(int j=0;j<index && prime[j]*i<MAXSIZE;j++){
            a[i*prime[j]]=0;
            if(i%prime[j]==0){
                break;
            }

        }
    }
    return index;//处理了N以内所有的素数,0~index-1为所有素数的索引下标
}
//6倍筛法
bool is_prime_3(int x){
    int i;

    if( x == 2 || x == 3 || x == 5 )
        return 1;
    if( x%2 == 0 || x%3 == 0 )    /*判断是否为2,3的倍数*/
        return 0;
    for( i=6; i<=sqrt(x); i += 6 ){
        if( x%(i+1) == 0 || x%( i+5 ) == 0 )
            return 0;
    }
    return true ;
}
bool is_prime_4(int x){
    for(int i= 2;i< sqrt(x);i++){
        if(n % i == 0) return false;
    }
    return ture;
}
View Code

2:

https://blog.csdn.net/dl962454/article/details/76595623

https://www.cnblogs.com/Paul-Guderian/p/7723031.html

3:

https://blog.csdn.net/qq_36523667/article/details/78545682

https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E5%E7%9A%84%E8%B4%A8%E6%95%B0%E4%B8%80%E5%AE%9A%E5%92%8C6%E7%9A%84%E5%80%8D%E6%95%B0%E7%9B%B8%E9%82%BB

---------------------

https://www.luogu.org/problemnew/show/P1217

https://www.luogu.org/problemnew/solution/P1217

https://www.luogu.org/problemnew/solution/P3383






以上是关于求素数的主要内容,如果未能解决你的问题,请参考以下文章

求C语言中 判断素数的 代码!!!!!

c语言求2到100内的素数

C语言求范围之内素数的和与个数?

筛法求素数

C语言,求15以内的素数,关于num=1时,怎么修改?求大神

用C++编写程序求100以内的所有素数(质素)的和。