0713 兔子/素数之和/水仙花数/100米自由落地/不重复的3位数/这一年的第几天

package demo;

public class Demo01 {
     /**
      *  1.有一对兔子,从出生后第3个月起每个月生一对兔子,小兔子长到第三个月后每个月又生一对兔子
,假如兔子都不死,问每个月的兔子对数为多少? (输入月数,输出兔子的对数)
提示:兔子的规律1,1,2,3,5,8,13,21,34...
         斐波拉契数列
         f(n) = f(n-1) + f(n-2)
      */
	  public static void main(String[] args) {
		      int num = fn(8+1);
    System.out.println(num);
	  }
	  
	  public static int  fn(int n){
		    if(n==1){
		    	 return 1;
		    }
		    
		    if(n==2){
		    	return 1;
		    }
		    
		    return fn(n-1) + fn(n-2);
		    
	 }
}

 

package task;

//有一对兔子,从出生后第3个月起每个月生一对兔子,小兔子长到第三个月后每个月又生一对兔子
//,假如兔子都不死,问每个月的兔子对数为多少? (输入月数,输出兔子的对数)
//提示:兔子的规律1,1,2,3,5,8,13,21,...

import java.util.Scanner;

public class Test1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
	    System.out.println("请输入你想要查看的月数:");
	    int month = scan.nextInt();                         //输入的月份month
	    
		for(int i = 1;i <= month;i++){
			System.out.println("第"+i+"个月的兔子数量:"+number(i));
		}
	}
		
	public static int number(int x){                         //返回兔子的数目
			if(x == 1||x == 2)
				return 1;
			else
				return(number(x - 1) + number(x - 2));      //兔子的规律:1,1,2,3,5,8,13,21.....
	}
}
package demo;

public class Demo02 {
    /**
     * 2.求1~1000所有素数之和
     * 什么是素数
     *   能被1和自身整除的数,但1不是素数
     */
	public static void main(String[] args) {
	     //测试
		//System.out.println(isSu(2));
		//1,2,3,4,5,6,7,8,9,10
		//2+3+5+7 = 17
		int sum = 0;//总和
		 for (int i = 1; i <=1000; i++) {
			  if(isSu(i)){
				  sum += i;
			  }
		}
		 System.out.println(sum);
	}
	
	//是否是素数
	public static boolean isSu(int num){
		  if(num<=1){
			   return false;
		  }
		  
		  for (int i = 2; i < num; i++) {
			    if(num%i==0){
			    	  //不是素数
			    	return false;
			    }
		  }
		  System.out.println(num);
		  return true;
	}
}
package task;

//求1~1000所有素数之和

public class Test2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int count = 0,  sum = 0;                           //计数器count ,和sum
		
		for(int i = 2;i <= 1000;i++)
		{
			boolean flag = false;                         //建立一个标签
			
			for (int j = 2;j <= i;j++)
			{
				if(i % j == 0 && j != i){                  //判断是否为素数
					flag = true;                          //更改标签(非素数)
					break;
				}
			}
			
			if(!flag){                                     //对标签为true的素数求和
				System.out.println(i);
				sum += i;
				count ++;
			}
		}
		
		System.out.println("1-1000之间的素数一共有"+count+"个,其和为"+sum);

	}
}
package demo;

public class Demo03 {
     /**
      * 3.打印所有"水仙花数",所谓“水仙花数”是指一个三位数,其各位数字的立方等于该数本身。例如
153是一个“水仙花数”,因为153 = 1^3 +5^3+3^3
      */
	public static void main(String[] args) {
		 //System.out.println(isOK(153));
		for (int i = 100; i <1000; i++) {
			 if(isOK(i)){
				  System.out.println(i);
			 }
		}
	} 
	
	//判断一个数是否是水仙花数
	public static boolean isOK(int num){
		    int ge = num%10;
		    int shi = num/10%10;
		    int bai = num/100;
		   return num == ge*ge*ge + shi*shi*shi + bai*bai*bai;
	}
}
package task;

//打印所有"水仙花数",所谓“水仙花数”是指一个三位数,其各位数字的立方等于该数本身。例如
//153是一个“水仙花数”,因为153 = 1^3 +5^3+3^3

public class Test3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("所有的水仙花数:");
		
		for(int i = 100; i <= 999; i++)
		{
			int single = i % 10;                             //个位数
			int tens = i / 10 % 10;                          //十位数
			int hundreds = i / 100 % 10;	                 //百位数	
			int sum = (int)(Math.pow(single,3) + Math.pow(tens,3) + Math.pow(hundreds,3));  //立方和
			
			if(sum == i){
				System.out.println(i);
			}
		}

	}

}
package demo;

public class Demo04 {
    /**
     * 4.一球从100米高度自由落下,每次落地后反弹到原来高度的一半,
     * 再落下,求它在第20次落地时,共经过多少米
     * 
     * 1          2      3         4 ..
     * 100    200    250    275
     *       100     50      25        12.5
     */
	public static void main(String[] args) {
		System.out.println(getNum(10));
	}
	
	public static float getNum(int count){
		   if(count==1){
			   return 100f;
		   }
		   
		   if(count==2){
			    return 200f;
		   }
		   
		   return getNum(count-1) +(getNum(count-1)-getNum(count-2))/2;
	}
}
package task;

//一球从100米高度自由落下,每次落地后反弹到原来高度的一半,再落下,求它在第20次落地时,
//共经过多少米

public class Test4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double height=100;             //设立初始高度height
		double sum=100;                //小球第1次落地时已经过的高度
		
		for(int i=2;i<=20;i++)
		{
			height=height/2;           //计算高度
			sum=sum+height*2;          //小球第i次落地时共经过的高度
		}
		
		System.out.println("第二十次小球共经过:"+sum+"米");
	}
}
package demo;

import java.util.ArrayList;
import java.util.List;

public class Demo05 {
    /**
     * 5.输出1,2,3,4四个数字所产生的不重复的所有3位数
     * 123  132 213 231 312 321
     * 134
     * 234
     * 124
     */
	public static void main(String[] args) {
		 int[] arr = {1,2,3,4};
		 List<Integer> list = new ArrayList<Integer>();
		 int i,j,k;
		 for ( i = 0; i < arr.length; i++) {//i选第一个数
			  for (j = 0; j < arr.length; j++) {//j选第二个数
				  if(arr[i]==arr[j]){
					   continue;
				  }				  
	
			  
			  for (k = 0; k < arr.length; k++) {//k选第三个数
				   if(arr[i]==arr[k] || arr[j]==arr[k]){
					    continue;
				   }
				 int num = arr[i]*100 + arr[j]*10 + arr[k];
				 list.add(num);
			}
		}		 
	}
		 
			System.out.println(list.size());//24
			 //打印所有生成的数 
			  for (int n = 0; n < list.size(); n++) {
				 System.out.println(list.get(n));
			  }

	}

}	
	

 

package demo;

import java.util.ArrayList;
import java.util.List;

public class Demo06 {
	   /**
     * 5.输出1,2,3,4四个数字所产生的不重复的所有3位数
     * 123  132 213 231 312 321
     * 134
     * 234
     * 124
     */
	public static void main(String[] args) {
		int[] arr = {1,2,3,4};
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < arr.length; i++) {//i第一个数
			for (int j = 0; j < arr.length; j++) {//第二个数
				  if(arr[j]==arr[i]){//第二个数与第一个数重复
					  //忽略这轮循环,再次选第二个数
					    continue;
				  }
				  
				  //第二个数OK,选第三个数
				  for (int k= 0; k < arr.length;k++) {
					//第三个数不能与第一个和第二个数重复
					  if(arr[k]==arr[i] || arr[k] ==arr[j]){
						    continue;//忽略这轮,重新选
					  }
					  //三个数都选好了
					  int num = arr[i]*100 + arr[j]*10 +arr[k];
					  list.add(num);
				}
				
			}
					
		}
		System.out.println("一共生成"+list.size()+"个数");
		for (int i = 0; i <list.size(); i++) {
			 System.out.println(list.get(i));
		}
	}
}
package task;

//输出1,2,3,4四个数字所产生的不重复的所有3位数

public class Test5 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i,j,k;
		
		for(i = 1; i <= 4; i++)
		{
			for(j = 1; j<=4; j++)
			{
				for(k = 1; k <= 4; k++)
				{
					if(i != j && j != k && k != i)       //3个数互不相同
						System.out.printf("%d%d%d\n",i,j,k);
				}
			}
		}


	}

}

 

package demo;

import java.util.Scanner;

public class Demo07 {
    /**
     * 
6.输入某年某月某日,判断这一天是这一年的第几天
     */
	public static void main(String[] args) {
		//System.out.println(isRunYear(2018));
		  Scanner sc = new Scanner(System.in);
		  System.out.print("请输入年份:");
		      int year = sc.nextInt();
		      if(year<0){
		    	   System.out.println("请输入正确得年份");
		    	   return;
		      }
		  System.out.print("请输入月份:");
		     int mon = sc.nextInt();
		     if(mon<=0 || mon>12){
		    	  System.out.println("请输入正确得月份");
		    	   return;
		     }
		   System.out.print("请输入日期:");
		    int date = sc.nextInt();
		    //大月
		    if(date<=0 || date>31){
		    	 System.out.println("请输入正确得日期");
		    	 return;
		    }
		    //小月 4 6 9 11 
		    if(mon==4 || mon==6 || mon==9 || mon==11){
		    	 if(date>30){
		    		 System.out.println("请输入正确得日期");
			    	  return;
		    	 }
		    }
		    
		    if(mon==2 && isRunYear(year)){
		    	  //2月份并且是闰年
		    	  if(date>29){
		    		    System.out.println("请输入正确得月份");
		    	  }
		    	  return;
		    }
		    
		    if(mon==2 && !isRunYear(year)){
		    	  //2月份并且是平年
		    	  if(date>28){
		    		    System.out.println("请输入正确得月份");
		    	  }
		    	  return;
		    }
		    
		    
		    
		    
		    //判断是否是闰年从而确定二月得天数
		    int days;
		    if(isRunYear(year)){
		    	 days = 29;
		    }else{
		    	 days = 28;
		    }
		    int totalDays = 0;
		    switch(mon){
		        case 12: totalDays += 30;//11月天数
		        case 11:totalDays += 31;//10月天数
		        case 10:totalDays += 30;//9月天数
		        case 9:totalDays += 31;//8月天数
		        case 8:totalDays += 31;//7月天数
		        case 7:totalDays +=30;//6月天数
		        case 6:totalDays +=31;//5月天数
		        case 5:totalDays += 30;//4月天数
		        case 4:totalDays += 31;//3月天数
		        case 3:totalDays += days;//2月天数
		        case 2:totalDays +=31;//1月天数
		        case 1:totalDays += date;//日期数
		    }
		    System.out.println(totalDays);
	}
	
	public static boolean isRunYear(int year){
		   if((year%4==0 && year%100!=0)|| year%400==0){
			   return true;
		   }
		   return false;
	}
}
package task;

import java.util.Scanner;

//输入某年某月某日,判断这一天是这一年的第几天

public class Test6 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入某年某月某日:");
		Scanner scan = new Scanner(System.in);
		
		System.out.println("年:");
		int year = scan.nextInt();
		System.out.println("月:");
		int month = scan.nextInt();
		System.out.println("日:");
		int day = scan.nextInt();
		
		int nonleapyear[] = {31,28,31,30,31,30,31,31,30,31,30,31};    //非闰年
		int leapyear[] = {31,29,31,30,31,30,31,31,30,31,30,31};       //闰年
		
		int mon = 0;
		int tian = 0;
		
		//判断输入是否可取
		if(month > 12 || month < 1 || day > 31 || day <1 ){
					System.out.println("输入有误,无法查询!");
		}
		
		//闰年(不能整除100,能整4或400)
		else if(year % 100 != 0 && year %4 == 0 || year %400 == 0){   
			if(month < 2){
				System.out.println(year+"年"+month+"月"+day+"日是"+year+"年的第"+day+"天。");
			}
			else{
				for(int i = 2;i <= month;i++){
					mon += leapyear[i-2];        //前面的(month-1)个月的天数之和
				}
				tian = mon + day;                //计算天数
				System.out.println(year+"年"+month+"月"+day+"日是"+year+"年的第"+tian+"天。");
			}
		}
		
		//非闰年
		else{
			if(month < 2){
				System.out.println(year+"年"+month+"月"+day+"日是"+year+"年的第"+tian+"天。");
			}
			else{
				for(int i = 2;i <= month;i++){
					mon += nonleapyear[i-2];      //前面的(month-1)个月的天数之和
				}
				tian = mon + day;                 //计算天数
				System.out.println(year+"年"+month+"月"+day+"日是"+year+"年的第"+tian+"天。");
			}
		}
	}
}

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章