2 条题解

  • 0
    @ 2024-1-8 11:19:58

    O(n)欧拉筛

    #include<iostream>
    
    using namespace std;
    
    const int N = 1e7 + 10;
    
    bool vis[N];
    
    int prime[N], cnt;
    
    int main(){
    
    	int n;
    
    	cin >> n;
    
    	for (int i = 2; i <= n; i ++){
    
    		if(!vis[i]){
    
    			prime[++cnt] = i;
    
    			vis[i] = true;  
    
    		}
    
    		for (int j = 1; i * prime[j] <= n && j <= cnt; j ++){
    
    			vis[i * prime[j]] = true;
    
    			if(i % prime[j] == 0) break;
    
    		}
    
    	}
    
    	cout << cnt;
    
    	return 0;
    
    }
    

    信息

    ID
    341
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    83
    已通过
    12
    上传者