package com.sunyong
/*
*一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生
* 一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)
* 能繁殖成多少对? 分析:兔子的规律为数列,1,1,2,3,5,8,13,21
* /
//兔子生孩子-->斐波那契数列,前两者和等于第三者
object Tuzi {
def main(args: Array[String]): Unit = {
//斐波那契数列,前两者和等于第三者 ai=ai-1 + ai-2
val rubbit: Array[Int] = new Array[Int](12)
rubbit(0) = 1
rubbit(1) = 1
var i: Int = 2
while (i<=rubbit.length-1){
rubbit(i)=rubbit(i-1)+rubbit(i-2)
i += 1
}
println("12个月后几对兔子:"+rubbit(11))
for(s<-rubbit) {
println(s)
}
}
}
2.求101-200素数个数
package com.sunyong
import util.control.Breaks._
// 101-200的素数个数并输出
object Su {
def main(args: Array[String]): Unit ={
var count=0//定义个数for(i:Int<-101 to 200){breakable(for(j:Int<-2 to i-1){if(i%j==0){//可整除不是素数,跳出出循环break()}else{if(j==i-1){//是素数输出个数+1
count+=1print(i+" ")}}})}println()println("共有"+count+"个")}}
3.水仙花数
package com.sunyong
//三位数水仙花数:位数三次幂和等于本身
object Shuixiahua {
def main(args: Array[String]): Unit ={for(i:Int <-100 to 999){
var ge = i%10
val shi = i%100/10
val bai = i/100if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai))println(i)}}}
4.正整数分解质因数
package com.sunyong
import scala.io.StdIn
//分解质因数 如90=1*2*3*3*5
object Fenjie {
def main(args: Array[String]): Unit ={println("请输入一个整数:")
var num =StdIn.readInt()if(num >1){
var n =2// 定义一个最小的质数,直接从2开始print(num +"=1*")while(num != n){// 如果能被整除,就打印出n这个质数if(num % n ==0){print(n +"*")
num /= n // 继续让num作为新的数继续除以n}else n+=1// 如果不能被整除,最小质数+1}// 如果一个质数刚好等于输入的这个数print(n)//到最后n=num时在输出n}}}
5.求最大公约数和最小公倍数
package com.sunyong
import scala.io.StdIn
//求最大公约数和最小公倍数//在循环中只要除数不等于0,用较大数除以较小的数//小的数作为下一轮大的数,余数作为小的数//返回最后较大数位最大公约数//最小公倍数为两数积/最大公约数
object Gongyuebei {
def main(args: Array[String]): Unit ={println("请输入一个整数:")
var m =StdIn.readInt()println("请输入另一个整数:")
var n= StdIn.readInt()
val s1 = n //保存变量值
val s2 = m //保存变量值while(m!=0){//条件
var a =n%m //取余
n=m //较大=较小
m=a //较小=较大/较小取余}println("最大公约数:"+n)//最大公约数println("最小公倍数:"+s1*s2/n)//最小公倍数}}
6.求1000内完数
package com.sunyong
//完数:本身=所有因子之和如6=1+2+3 找出1000内完数
object Wanshu {
def main(args: Array[String]): Unit ={for(i<-1 until 1000){
var number =0for(a <-1 until i){if(i%a==0){//a是因子
number+=a //因子相加}}if(number==i){//判断是否完数println(i+"是完数")}}}}
7.猴子吃桃问题
package com.sunyong
/**
* 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,
* 又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?
*/
object MonkeyPeach {
def main(args: Array[String]): Unit ={
var surplus:Int =1
var sum =0for(day <-10 until 1 by -1){//逆向思维
surplus =2*surplus+2;}println("第一天的桃子数量:"+surplus)}}
package com.sunyong
/*
* 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
* 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
* 组成所有的排列后再去 掉不满足条件的排列。
*/
object Zushu {//Java实现
def main(args: Array[String]): Unit ={//满排列问题4*3*2=24
var s =""
var count =0for(i<-1 to 4){for(j<-1 to 4){for(k<-1 to 4){if(i!=j && j!=k && i!=k){
count+=1print(s + i + j + k +"\t")}}}}println()println("共有:"+count+"种组合")}// scala函数做法
def a()={
var y =0(1 to 4).toArray.permutations.map(x=>(x.dropRight(1))).map(x=>(x,1)).foreach(x=>{println(x._1.mkString(""));y=y+1})println("共有"+y+"种方式")}}
10.判断某年某月某日是这一年的第几天
package com.sunyong
import java.util._
//判断今天是这一年的第几天
object CountDay {
def main(args: Array[String]): Unit ={
var c = Calendar.getInstance()//设置时间可为年月日(注意月份是0-11)// c.set(2019,11,31)
c.setTime(newDate())println(c.get(Calendar.DAY_OF_YEAR))}}
11.求第五人岁数
//第一个人10岁此后每个人大两岁package com.sunyong
//五人岁数
object Age {
def main(args: Array[String]): Unit ={
var a1=10for(i:Int <-1 to 4){
a1+=2}println(a1)}}
12.任意输入一个整数(小于10位),输出它一共有多少位。
package com.sunyong
//判断整数的位数import scala.io.StdIn
object Numweishu {
def main(args: Array[String]): Unit ={println("请输入一个整数:")
var num = StdIn.readInt()println(num.toString.length)}}
13.计算1000以内所有不能被7整除的整数之和
package com.sunyong
//计算1000以内所有不能被7整除的整数之和
object num7 {
def main(args: Array[String]): Unit ={
var sum =0for(i <-1 to 1000){if(i%7!=0){
sum+=i
}}
println ("1000以内所有不能被7整除的和:"+ sum)}}
14.计算 1+2-3+4-5+6-7…+100的结果//注意审题
package com.sunyong
object _100 {
def main(args: Array[String]): Unit ={
var sum =1for(i <-2 to 100){if(i%2==0){
sum+=i
}else{
sum-=i
}}println("总和是:"+ sum)}}
package com.sunyong
object mountain {
def main(args: Array[String]): Unit ={
var paper =0.00008
var num=0while(paper<8848.13){
num+=1
paper*=2}println("经过对折"+num+"次能达到")}}
16.从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 54321
package com
import scala.io.StdIn
object jiechen {
def main(args: Array[String]): Unit ={// 输入数字不要超过25println("输入一个正整数:")
var num = StdIn.readLong()
val n = num
var count = num
while(count>1){
num*=(count-1)
count-=1}println(n+"的阶乘:"+num)}}
package com
import scala.io.StdIn
import scala.util.control.Breaks._
object OddsNum {
def main(args: Array[String]): Unit ={
var num =0
var countOdd =0
var countEven =0println("输入正整数,输入-1结束:")breakable(do{
num = StdIn.readInt()if(num ==-1){println("输入结束")println("奇数个数:"+(countOdd)+"偶数个数:"+countEven)break()}elseif(num<0){println("输入必须为正整数,重新输入:")}else{if(num%2==0){
countEven+=1}else{
countOdd+=1}}}while((num !=-1)))}}