shell code one

ExpandedBlockStart.gif 代码
# !/bin/bash

# 计算一个十进制整数的二进制表示中1的个数
getnum()
{
    
if  [  - " $1 "  ]
    then
       echo 
" Usage:$(basename  " $0 " )需要一个参数 "
       
return   - 1
    fi
    
    a
= " $1 "
    num
= 0
    
while  [  $a   -ne   0  ]
    
do
      ((a
&= (a - 1 )))
      ((num
++ ))
    done
    
    echo 
" `toBin $1`中1的个数为${num} "
}

# 将一个十进制整数用二进制表示
toBin()
{    
    b
= " $1 "
    i
= 0
    
while  [  " $b "   -ne   0  ]
    
do
      ((arr[i
++ ] = $b & 1 ))
      ((b
>>= 1 ))
    done
    
    
for ((j = i;j >= 0 ;j -- ))
    
do
      echo 
- $ {arr[j]}
    done
    echo  
}

# 求给定值n以内所有的素数
getPrime()
{
    array
= ( $ (seq  2   $1 ))
    
    
for ((m = 0 ;m ** 2 < " $1 " ;m ++ ))
    
do
        
for ((n = m + 1 ;n< " $1 " - 1 ;n ++ ))
        
do
          
if  [[  $ {array[m]}  -ne   0    &&   $ {array[n]}  -ne   0  ]]
          then
            
if  [  $ (( $ {array[n]} %$ {array[m]}))  -eq   0  ]
            then
                ((array[n]
= 0 ))
            fi
          fi
        done
    done
    
    echo 
" $1以内的素数为: "
    
for  ((k = 0 ;k< " $1 " - 1 ;k ++ ))
    
do
      
if  [  $ {array[k]}  -ne   0  ]
      then
        printf 
" %s  "   " ${array[k]} "  
      fi
    done
    echo
}

# main
getnum   $1
getPrime 
$1
 

转载于:https://www.cnblogs.com/MichaelGuan/archive/2010/10/06/1844873.html

猜你喜欢

转载自blog.csdn.net/weixin_34200628/article/details/93292395
one
今日推荐