• 素数算法


    看着空荡荡的博客不知道写些什么,写些以前的心得吧

    素数算法比较的常用,这次就写它了。

    这里我给出自己常用的写法

    写法1:

    int n=10000;
        int prime[10000];                   //用于存储素数
        int num=0;
        int j;
        for(int i=2;i<=n;i++){
            for(j=2;j<=sqrt(i);j++){        //里层只要循环到sqrt(i)就行了
                if(i%j==0)
                    break;
            }
            if(j>sqrt(i))prime[num++]=i;

    没有太多好讲的地方,就这几行,思路非常简单,只是把最基础的内层循环j<=n替换成了j<=sqrt[i],小优化了一下而已

    写法2:素数筛

        int num=0;
        int n=10000;
        int prime[10000];                   //用于存放素数
        int flag[10005];                    //用于判断i是否为素数
        memset(flag,0,sizeof(flag));
        for(int i=2;i<=n;i++){
            if(flag[i]==0){
                prime[num++]=i;
                for(int j = i+i; j<=n; j+=i)
                    flag[j]=1;
            }
        }

    非常常用的一个算法,思路也很简单,每找到一个素数之后,把它的倍数筛掉(因为肯定不是素数),这样时间复杂度就被降低到了线性,所以又称线性素数筛法

  • 相关阅读:
    JQuery Ajax调用asp.net后台方法
    使用NuGet发布自己的类库包(Library Package)
    Database Schema Reader
    DELL服务器引导光盘图片及下载链接
    android 点击屏幕关闭 软键盘
    xUtils
    fastjson是阿里巴巴的开源JSON解析库
    安卓学习资料
    DELL服务器引导光盘下载
    sqlserver下载
  • 原文地址:https://www.cnblogs.com/xinzhiyan/p/7822769.html
Copyright © 2020-2023  润新知