zoukankan      html  css  js  c++  java
  • UVa 10539

    通过这题学习了线性筛法素数打表的方法,题目本身更像数学思考题。

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <vector>
    #include <cstring>
    using namespace std;
    using LL = long long int;
    
    const int maxn = 1024000;
    bool check[maxn];
    LL pri[maxn], tot;
    
    void init()
    {
    	for (int i = 2; i < maxn; ++i){
    		if (!check[i]) pri[tot++] = i;
    		for (int j = 0; j < tot; ++j){
    			if (pri[j] * i > maxn) break;
    			check[pri[j]*i] = true;
    			if (i % pri[j] == 0) break;
    		}
    	}
    }
    int main()
    {
    	init(); int T; cin >> T;
    	while (T--){
    		LL L, U, res = 0; cin >> L >> U;
    		for (int i = 0; i < tot && pri[i] * pri[i] <= U; ++i){
    			LL cur = pri[i] * pri[i];
    			while (cur <= U){
    				if (cur >= L) ++res;
    				cur *= pri[i];
    			}
    		}
    		cout << res << endl;
    	}
    	return 0;
    }


  • 相关阅读:
    bzoj1648
    bzoj3404
    bzoj1650
    bzoj1625
    bzoj1606
    bzoj1464
    bzoj1572
    bzoj1617
    bzoj1092
    bzoj1091
  • 原文地址:https://www.cnblogs.com/kunsoft/p/5312695.html
Copyright © 2011-2022 走看看