zoukankan      html  css  js  c++  java
  • 素数算法

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

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

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

    写法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;
            }
        }

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

  • 相关阅读:
    linux 重新设置mysql密码
    php 一些个 常用 函数
    nginx php错误日志开启
    linux crontab 定时执行任务(php)
    聚合短信接口-- php
    Commons Collections1分析
    spring之 注解ioc&依赖注入 & spring整合mybatis
    Spring之 IOC&依赖注入
    java之 Mybatis(二)
    java之 MyBatis(一)
  • 原文地址:https://www.cnblogs.com/xinzhiyan/p/7822769.html
Copyright © 2011-2022 走看看