快乐数论线性筛

```c++

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define MAX 100000
long long su[MAX],cnt;
bool isprime[MAX];
void prime()
{   
    cnt=1;    
    memset(isprime,1,sizeof(isprime));    
    isprime[0]=isprime[1]=0;    
    for(long long i=2;i<=MAX;i++)    
    {    
        if(isprime[i])         
            su[cnt++]=i;            
        for(long long j=1;j<cnt&&su[j]*i<MAX;j++)       
        {         
            isprime[su[j]*i]=0;           
        }        
    }    
}    
int main()
{
    int n; 
    cin>>n; 
    prime(); 
    for(long long i=1;su[i]<=n;i++)   
        printf("%d  ",su[i]);
    return 0;
}   
```
原文地址:https://www.cnblogs.com/heqizheng/p/shulunxianxingshai.html