shell code one

本文介绍了一个Bash脚本,该脚本包含两个主要功能:一是计算十进制整数转换为二进制后的1的个数;二是生成给定范围内的所有素数。通过解析十进制数的二进制表示来计数其中的1,以及使用筛选法找出指定范围内所有素数,展示了Bash脚本在数值计算方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值