参考博客

超级素数思路是借鉴这篇博客https://blog.csdn.net/double_main/article/details/53835489

文章目录

  • 参考博客
  • 一、猴子选大王
    • 1.问题描述
    • 2.代码如下(示例):
    • 3.实验测试
  • 二、超级素数
    • 1.问题描述
    • 2.代码如下(示例):
    • 3.实验测试

一、猴子选大王

1.问题描述

n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能:(1) 要求由用户输入开始时的猴子数n、报数的最后一个数m。(2) 给出当选猴王的初始编号。

2.代码如下(示例):

import scala.io.StdIn._
object Monkeyking{def main(args:Array[String]): Unit={print("请输入猴子总数:")var n = readInt()print("请输入循环数:")var m = readInt()var i = 0var k = 1val monkeys = new Array[Int](n)var num = n //记录候选的猴子数for(j <- 0 to n-1){monkeys(j)=j+1}while(num!=1){if((monkeys(i)!=0)&&k!=m){//猴子是候选但没数到了mk=k+1i=i+1}else if(k==m&&(monkeys(i)!=0)){//猴子是候选且数到了mmonkeys(i)=0k=1num=num-1i=i+1}else {//跳过已淘汰猴子i=i+1}if(i==n)//从列表头又开始循环i=0}for(j <- 0 to n-1)if(monkeys(j)!=0) printf("第%d个猴子是大王\n",monkeys(j))}
}

这里说明一下,从头开始循环是判断i是否为n,而不是n-1,是因为前面我已经i=i+1了,等于说判断完monkeys(i) 我就后移了一位。方法很简单,容易想清楚。

3.实验测试

二、超级素数

1.问题描述

一个素数,依次从最高位去掉一位,两位……若得到的都是素数,且各数字不为0,则称为超级素数
例如137是一个3位数的超级素数,因为137是一个3位素数、去掉高1位后得37是一个2位素数、去掉高2位得7是一个1位素数,而素数107不是超级素数,因为去掉高1位得7不是一个2位素数。
我是列举的1~10000的超级素数

2.代码如下(示例):

import scala.collection.mutable.ListBuffer
object SuperPrime{def IsPrime(x:Int): Boolean = {if( x == 1)return falsefor(i <-2 to x){if (x % i == 0)return falseif(i*i>x)return true}return true}def main(args:Array[String]): Unit={var one=2//计录两/三/四位数中的超级素数个数var two=0var three=0var four=0var n=0var pow=1var number=0var head=0//记录ListBUffer中不同位数的超级素数起始位置var tail=1//记录ListBUffer中不同位数的超级素数终止位置val sprime=ListBuffer(3,7)for(i <- 1 to 3){//代表10的i次方pow=10*pow if(i==2){head=one+headtail=head+two-1}else if(i==3){head=two+headtail=head+three-1}for(j <- 1 to 9){//代表十/百/千位数for(k <- head to tail){//prime(0)=3,prime(1)=7number =sprime(k)+pow*jif(IsPrime(number)==true){sprime+=number//插入超级素数到ListBuffer尾部if(i==1)two=two+1else if(i==2)three=three+1else four=four+1    }   }}}printf("2   ")for(i <- 0 to one+two+three+four-1)printf("%d ",sprime(i))printf("共%d个超级素数。\n",1+one+two+three+four)}}

因为多位数的超级素数只可能是以3或7为个位数,所以我们可以直接让它的十位数为1~9,判断是否为素数,是就保存到ListBuffer尾部,记录个数(分不同位数),然后再以两位数的超级素数为基础,在百位数上遍历1到9……

3.实验测试

Scala学习之猴子选大王,超级素数相关推荐

  1. 约瑟夫环问题的学习和应用:猴子选大王(增强版)

    猴子选大王(增强版) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到M,凡报到M的猴子即退出圈子,接着又从紧邻的下一只猴子 ...

  2. JAVA猴子选大王问题

    题目要求 猴子选大王.输入猴子的个数n,所有的猴子从1-n编号排成一圈,从1号猴子开始数数,数到3的倍数猴子被淘汰,最后剩下的是大王.输出是大王的猴子的编号(提示:使用数组,每个数组元素相当于一个猴子 ...

  3. python解决猴子选大王问题:15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问: 哪只猴子会成为大王 ?

    话不多说,超级简单,直接上代码: ## 给猴子编号 AllMonkey = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]## 循环出栈 num ...

  4. java线性表猴子选大王,猴子选大王 课程设计报告.doc

    猴子选大王 课程设计报告 目录 一.需求分析2 1.问题描述:2 2.基本要求:2 3.需求分析:2 二.概要设计3 三.详细设计4 1.循环队列4 2.循环链表5 3.伪代码6 4.具体函数分析及变 ...

  5. 约瑟夫环 猴子选大王

    <? /*** 猴子选大王:一群猴子排成一圈,按1,2,-,n依次编号.* 然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,* 如此不停的进行下去,直 ...

  6. 7-28 猴子选大王 (C语言)

    7-28 猴子选大王 (20 分)一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻 ...

  7. 解决猴子选大王问题(用C,原创)

    今天在群里看到有人提到一个猴子选大王的问题,题目如下: 题目 山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退 ...

  8. 常用算法(C#): 猴子选大王问题

    猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...

  9. 猴子选王c语言链表程序代码,C语言程序设计-猴子选大王[链表应用]

    2032 猴子选大王 Description 有N只猴子,从1~N进行编号.它们按照编号的顺时针方向排成一个圆圈,然后从第一只猴子开始报数.第一只猴子报的第一个数字为1,以后每只猴子报的数字都是它们前 ...

最新文章

  1. 中国 GDP 20 强城市排行榜(2001-2020)
  2. 显示器分辨率一直跳_2020如何选择适合自己的显示器?小白选购电脑显示器必看!...
  3. C#3.0 为我们带来什么(3) —— 初始化器
  4. python语言源程序文件类型_浅谈Python的文件类型
  5. 中国碳纤维增强热塑性(CFRTP)复合材料市场趋势报告、技术动态创新及市场预测
  6. SQL Server表和字段说明的增加和更新
  7. 针对非业务的通用框架开发,如何做需求分析和设计?
  8. ThinkPHP的四种URL模式 URL_MODEL
  9. word提示“无法创建工作文件,请检查临时环境变量”的解决办法
  10. Flash Player离线安装包下载指南
  11. 单片机C语言12864绘画,单片机驱动lcd12864液晶绘图功能程序+仿真
  12. Python的学习笔记案例4--52周存钱挑战4.0
  13. 数据结构:自组织线性表
  14. 云计算与openstack
  15. 网络请求框架 -- 理解Https
  16. Ubuntu 笔记本合上盖子时,不进入休眠
  17. Flash Helper Service 这个流氓,动不动弹出广告!!
  18. 我是如何用一行代码表白学妹~❤520情人节送女朋友的3D樱花雨相册礼物❤~(程序员表白专属)...
  19. 弘辽科技:淘宝客单价高好还是低好?如何提高客单价?
  20. Git的稀疏检出功能

热门文章

  1. 百度云开放语音API 智能语音demo
  2. sed awk工具 及一些常用的shell脚本
  3. 【蓝桥】第十一届软件类校内模拟赛(一)
  4. 一直搞不清楚in和exists两者到底有什么区别,今天总算搞清楚了
  5. http接口测试工具-Advanced-REST-client
  6. Excel处理字段截取
  7. html js添加随机数,js随机数(支持自定义范围)
  8. java反编译工具怎么安装_java反编译工具Jode Decompiler的Eclipse插件安装与使用
  9. 变化检测综述 Deep learning for change detection in remote sensing images: comprehensive review and me
  10. 使用 Shell 脚本监控主机,实现主机性能监控