熟悉scala命令,scala语言运行超级素数和猴子大王

 

  • 实验目的

    1. 在Linux操作系统中安装Scala
    2. 输入“scala”命令,熟悉地运行Scala解释器
    3. scala语言运行超级素数和猴子大王
  • 实验仪器

Virtualbox管理器

  • 实验框图(电路图/流程图)

    1. 在Windows中使用VirtualBox安装Ubuntu,安装好scala后,使用scala解释器,


可以使用命令“:quit”退出Scala解释器,如下所示:

  1. 打开命令行终端(可以使用Ctr+Alt+T组合键来打开终端)。在Scala安装目录/usr/local/scala下面新建一个mycode文件夹,用于存放自己的练习代码文件(后面我们都会把练习代码文件放在/usr/local/scala/mycode这个目录下),创建目录的命令如下:

vim后,分别在XTest1.scalaXTest2.scala文件中输入代码,并获得结果:


使用以下命令,对文件进行共享:

     

  • 实验基本原理(原理/源程序)(源程序来自老师和同学)

实验代码:

  1. XTest1.scala:
object XTest1{

  def powerOf2(x:Int):Int = {if(x==0) 1 else 2*powerOf2(x-1)}

  def sum(f: Int => Int, a:Int, b:Int):Int = {if(a > b) 0 else f(a) + sum(f, a+1, b)}

  def ave(a:Array[Int], n:Int):Double = {if (n == 0) a(n) else (ave(a, n-1) * (n-1)+a(n-1)) / n}

}
    • XTest2.scala:
object XTest2{

 def main(args:Array[String]){

     var a = Array(1,2,3,4,5,6,7,8,9,10)

     println(XTest1.sum(x=>x*x, 1, 5))

     println(XTest1.sum(XTest1.powerOf2, 1, 5))

     println(XTest1.ave(a, 6))

}

}

 

3.超级素数:

object SpPrime{

    def IsPrime(i:Int):Boolean = {//判断是否为素数

        var flag:Boolean = true

        for (j <- 2 until i) {

            if ((i%j)==0)

            flag = false

        }

        flag

    }

    def powerOf10(x:Int):Int = {//求10的幂

        if(x==0) 1 else 10 * powerOf10(x-1)

    }

    def main(args:Array[String]){

        for(i <- 2 to 10000){

            var flag:Boolean = true

            var digit = (i+"").length//位数

            //printf("i有%d位\t",digit)

            for(j <- 1 to digit)

                if(!IsPrime(i/powerOf10(j-1)))//根据位数循环,除法取整依次求出i,去掉个位,十位,  百位...的值

                    flag = false

            if(flag)

                printf("\t%d",i)

        }

    }

}

 

4.猴子选大王:

object MonkeyK{

    def main(args:Array[String]){

       var (num,n,point,result) = (100,100,-1,0)

       val arr = new Array[Int](num)

      

       for(i <- 0 to 99)

           arr(i) = 1

       while(num > 0) {

           for(i <- 0 to 2) {       // 报数

              point = (point + 1) % n

              while(arr(point) == 0) { //如果已经出列就让下一个未出列的猴子报数

                  point = (point + 1) % n

              }

              if(i == 2 && arr(point) == 1) {// 出列

                  arr(point) = 0



                  result = point + 1

                  num-=1

              }

           }

           if(num == 0) {

              printf("%d",result)

           }

       }

    }

}

  • 实验数据、分析与实验结果

   超级素数描述:依次从个位去掉后还为素数的素数即超级素数。求10000以内所有超级素数。


猴子选大王描述:n个猴子绕成一圈报数1,2,3,...每次报到3的猴子淘汰。直到最后只剩1个猴子时,它成为大王。若有100个猴子,那第几个猴子会赢?

  • 总结、心得体会

Scala是大小写敏感的,所以,不要输入错误,比如把小写开头的object输成大写开头的Object。文件名XTest.scalaxtest.scala也是两个不同的文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值