其他分享
首页 > 其他分享> > 数论(一)筛素数

数论(一)筛素数

作者:互联网

 

 

思路:数据范围1e6线性筛法筛出所有质数,遍历所有素数prm[i]判断n-prm[i]是否为素数,是则输出答案

代码:

思路:数据范围1e6线性筛法筛出所有质数,遍历所有素数prm[i]判断n-prm[i]是否为素数,是则输出答案

代码:

int prm[maxn],cnt;

bool vis[maxn];

void init(int n){

vis[0] = vis[1] = true;

for(int i = 2 ; i <= n ; ++i ){

        if(!vis[i]) prm[cnt++] = i;

        for(int j = 0 ; prm[j] <= n / i ; ++j){

               vis[prm[j] * i] = true;

               if(i % prm[j] == 0) break;

        }

}

}

void solve(){

init(maxn - 1);

while(cin >> n,n){

        for(int i = 0 ; i < cnt ; ++i ){

               if(!vis[n - prm[i]]){

                      cout << n << " = " << prm[i] << " + " << n - prm[i] << endl;

                      break;

               }

        }

}

}

 

标签:cnt,vis,数论,int,prm,素数,maxn
来源: https://www.cnblogs.com/wzh1023521478/p/14333378.html