zoukankan      html  css  js  c++  java
  • shell脚本——列出质数

    #!/bin/sh  
    for((i=1;i<=100;i++))  
    do   
            for((k=2;k<=i;k++))  
            do   
                    if [ $k -eq $i ]  
                    then 
                            echo "$i" 
                            break    
                    elif [ $(($i%k)) -eq 0 ]  
                    then 
                            break  
                    fi  
            done  
    done 

    优化版本:(至少提高速度30%)

    #!/bin/sh  
    for((i=1;i<=2000;i++))
    do
            for((k=2;k<=i;k++))
            do
                    if [ $k -eq $i ]
                    then
                            echo "$i" 
                            break
                    elif [ $(($i%k)) -eq 0 ]
                    then
                            break
        #优化部分,如果除以一个数本身的二分之一后还不为0,那么可以肯
        #---定这个数不会再被任何数整除(本身除外)
                    elif [ $k -eq $(($i/2)) ]
                    then
                            echo "$i"
                            break
                    fi
            done
    done

    测试结果:

    列出1-2000里的质数

    运行优化前的脚本:

    [root@bj ~]# time (sh zhishu.sh)

    real    0m11.840s
    user    0m11.559s
    sys     0m0.248s

    运行优化后的脚本:

    [root@bj ~]# time (sh zhishu.sh)

    real    0m6.617s
    user    0m6.444s
    sys     0m0.156s

  • 相关阅读:
    [离散数学]集合3.1、3.2、3.3
    Hadoop YARN ResourceManager 未授权访问漏洞复现
    dns域传送漏洞
    文件包含漏洞详解
    XXE漏洞详解
    常见cms
    IP地址详解
    帧详解
    IP包头内容详解
    SSRF漏洞详解
  • 原文地址:https://www.cnblogs.com/xuxyblog/p/3580127.html
Copyright © 2011-2022 走看看