方法习题记录

1、1的阶乘到20的阶乘之和

/**
 * 1的阶乘到20的阶乘之和
 * @author	努力Coding
 * @version    第一种方法
 * @data	2020年1月12日 
 */
public class Factorial {

	public static void main(String[] args) {
		long sum = 0;//所有阶乘之和
		for(int i = 1; i <= 20; i++) {//1的阶乘到20的阶乘
			sum += factorial(i);//调用方法参与求和
		}
		System.out.println("所有阶乘和为:" + sum);
	}
	
	/**
	 * 阶乘方法
	 * @param n
	 * @return sum(每个阶乘之积)
	 */
	public static long factorial(int n) {
		long integral = 1;//每个阶乘之积
		for(int i = 1; i <= n; i++) {//单独的每个阶乘的积
			integral = integral * i;
		}
		return integral;
	}
}

/**
 * 1的阶乘到20的阶乘之和
 * @author	努力Coding
 * @version    第二种方法:递归
 * @data	2020年1月12日 
 */
public class Factorial {

	public static void main(String[] args) {
	long sum = 0;
	for(long i = 1; i <= 20; i++) {
	    sum += getFactorial(i);
	}
	System.out.println(sum);
    }
	
	public static long getFactorial(long num) {
	if(num == 1) {
	    return 1;
	}
	num *= getFactorial(num - 1);
	return num;
    }
}

2、100之内的素数

/**
 * 100之内的素数(除了1之外,只能被1和自身整除的)
 * @author	努力Coding
 * @version	
 * @data	2020年1月12日 
 */
public class PrimeNum {

	public static void main(String[] args) {
		System.out.println("100以内素数有:" );
		primeNum();//调用判断100以内素数的方法
	}
	
	/**
	 * 判断100以内素数的方法
	 */
	public static void primeNum() {
		int num1, num2;//被除数num1和除数num2
		for(num1 = 2; num1 <= 100; num1++) {//被除数num1
			for(num2 = 2; num2 < num1; num2++) {//除数num2
				if(num1 % num2 == 0) {//如果能被除了1和自身的数整除,就不是素数,跳出当前循环
					break;
				}
			}
			if(num1 == num2) {//能被1和自身整除,就是素数,打印出来
				System.out.print(num1 + ",");
			}
		}
	}
}

3、海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

/**
 * 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,
 * 这只猴子把多的一个扔入海中,拿走了一份。
 * 第二只猴子把剩下的桃子又平均分成五份,又多了一个,
 * 它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
 * 问海滩上原来最少有多少个桃子?
 * @author 	努力Coding
 * @version
 * @data	2020年1月12日 
 */
public class Peach {

	public static void main(String[] args) {
         dividePeach();//调用分桃子的方法
    }
     
     
    /**
     * 分桃子
     */
     public static void dividePeach(){
    	 int count;//次数
         for(int i = 1; i < 10000; i++){
             int num = i;//桃子数从1开始猜
             for(count = 1; count <= 5; count++){//判断是否满足分五次每次都多1
                 if((num - 1) % 5 == 0){
                     num = (num - 1) / 5  * 4;
                 }else{
                     break;
                 }
             }
             if(count > 5){//符合条件了 就打印输出 跳出循环
                 System.out.println("至少" + i + "个桃子");
                 break;
             }
         }
     }
}
posted @ 2020-01-13 22:48  笔架山Code  阅读(157)  评论(0编辑  收藏  举报