• 筛法求素数模板


    #include<bits/stdc++.h>
    using namespace std;
    int flag[100000];
    void askprime(){ flag[1]=1;//1既不是质数也不是合数 for(int i=2;i<=sqrt(100000);i++)//从1到sqrt(n) { if(flag[i]==0) { for(int j=2;i*j<=sqrt(100000);j++) { flag[i*j]=1;//打上标记 }//将素数后的倍数筛掉 } } }//筛出1~100000的素数 int main() { askprime(); for(int i=1;i<=100;i++) { if(flag[i]==0) cout<<i<<" "; } }

    欧几里德筛法

    #include<bits/stdc++.h>
    using namespace std;
    int prime[1005];
    int isntprime[1005]={0,0};
    int prime_num;
    void askprime()
    {
        for(int i=2;i<=1005;i++)//已知质数 
        {
            if(isntprime[i]==0)
            {
                prime[prime_num]=i;
                prime_num++;
            }
            for(int j=0;j<prime_num&&i*prime[j]<1005;j++)
            {
                isntprime[i*prime[j]]=1;//往后筛 
                if(i%prime[j]==0) break;//i第一个%到的prime[j]一定是这个合数最小的质因子 
            }
        }
    }
    int main()
    {
        askprime();
        int a;
        cin>>a;
        if(binary_search(prime+0,prime+102,4)==true) cout<<"Yes"<<endl;//找到返回1,没找到返回0
        else cout<<"No"<<endl;
    
        
    }//后面元素的值一定比前面元素的值大
    //前面元素乘上一个比自己最小质因数大的数
    //后面元素乘上一个比自己最小质因数小的数 

     

  • 相关阅读:
    Windows API 的数据类型与 Delphi 数据类型对照表
    Delphi 编译错误信息表
    Delphi中的容器类
    Delphi 快捷键
    代码折叠
    [转]Delphi中record的使用
    [转]常用公共函数单元
    Delphi 运行时错误信息表
    C#调用Win32 的API函数User32.dll
    [转]Delphi程序启动参数的读取
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9242815.html
Copyright © 2020-2023  润新知