zoukankan      html  css  js  c++  java
  • 线性筛模板

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 const int N=1e5+10;
     6 int Min[N],zs[N],cnt=0,n,phi[N];
     7 void prime(int n){
     8     memset(Min,0,sizeof(Min));
     9     for(int i=2;i<=n;i++){
    10         if(Min[i]==0){
    11             Min[i]=i;//自己是自己的最小质数 
    12 //            phi[i]=i-1;
    13             zs[++cnt]=i;
    14         }
    15         for(int j=1;j<=cnt;j++){//当前质数*小于等于自己的质数来筛合数(当然别筛过了) 
    16             if(Min[i]<zs[j]||zs[j]>n/i){//当前i的最小质因数比自己小或乘出来会越界 
    17 //                phi[i*zs[j]]=phi[i]*zs[j];//说明phi[i*zs[j]]时定会有不止一个zs[j],欧拉函数顺手乘上这个质数就好 
    18                 break;
    19             }
    20 //            phi[zs[j]*i]=phi[i]*(zs[j]-1);//若这个质数j与i互质,则phi[i*zs[j]]=phi[i]*phi[zs[j]]=phi[i]*(zs[j]-1) 
    21             Min[zs[j]*i]=zs[j];//乘出来的合数最小值肯定为小于等于自己的那个质数
    22         }
    23     }
    24     for(int i=1;i<=cnt;i++)
    25         printf("%d ",zs[i]);//打印质数 
    26 }
    27 int main(){
    28     scanf("%d",&n);
    29     prime(n);
    30     return 0;
    31 }
  • 相关阅读:
    IDEA插件和快捷设置
    漫谈虚拟内存
    漫谈进程和线程
    漫谈计算机语言
    初识Python
    数据库物理设计
    漫谈计算机体系
    数据库逻辑设计
    NLP中几种分词库的简单使用(Python)
    ML————朴素贝叶斯原理和SKlearn相关库
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9594878.html
Copyright © 2011-2022 走看看