zoukankan      html  css  js  c++  java
  • [51nod 1106] 质数检测

    给出N个正整数,检测每个数是否为质数。如果是,输出"Yes",否则输出"No"。

    (N leq 1000, a_i leq 10^9)

    Solution

    先筛出 (10^5) 以内的质数,利用这些质数去判断每个给定的数是否为质数,复杂度 (O(N sqrt V/ log V))

    #include <bits/stdc++.h>
    using namespace std;
    
    const int MAXN = 100005;
    int prime[MAXN+1]; // Note: Let prime[0] donate the number of primes
    // Note: the array "prime" has two different roles in the algorithm
    void presolve() {
        memset(prime,0,sizeof prime);
        for(int i=2;i<=MAXN;i++) {
            if(!prime[i]) prime[++prime[0]]=i;
            for(int j=1;j<=prime[0]&&prime[j]<=MAXN/i;j++) {
                prime[prime[j]*i]=1;
                if(i%prime[j]==0) break;
            }
        }
    }
    
    signed main() {
        presolve();
        int n,t;
        cin>>n;
        while(n--) {
            cin>>t;
            int flag=0;
            int lim=sqrt(t);
            for(int i=1;prime[i]<=lim;i++) flag|=(t%prime[i]==0);
            cout<<(flag?"No":"Yes")<<endl;
        }
    }
    
    
  • 相关阅读:
    IntelliJ Idea 快捷键列表
    mysql索引类型和方式
    基本git指令
    idea中deBug方法
    BeanUtils.copyProperties(A,B)使用注意事项
    MySQL字段类型
    JAVA常识1
    Redis在windows下的安装下载
    Netty
    IDEA工具
  • 原文地址:https://www.cnblogs.com/mollnn/p/12356458.html
Copyright © 2011-2022 走看看