算法入门练习

题目描述
KiKi知道了什么是质数(只能被1和他自身整除的数),他现在想知道所有三位整数中,有多少个质数。

输入描述:

输出描述:
一行,一个整数,表示所有三位整数中,有多少个质数。

代码实现:

public class Main{
	    public static void main(String[] args) {
	        int n = 0;
	        int i, j;
	        for(i = 100 ;i < 1000 ; i++){
	            int m = 0;
	            for(j = 2 ; j < 1000; j++){
	                if(j < i && i % j == 0){
	                    m = m + 1;
	                }
	            }
                if(m == 0){
                    n++;
                }
	        }
	        System.out.println(n);
	    }
}

题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。

输入描述:
输入只有1行,包含一个正整数K,表示发放金币的天数。
输出描述:
输出只有1行,包含一个正整数,即骑士收到的金币数。

代码实现:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int h=0;//记录前一个i
        int l = 1 , i , sum = 0;
        for( i=1;i<=n;i+=l){//这个过程请读者带数运行以下就理解了
            sum+=l*(i-h);//总的金币相加
            l++;//下一次给的金币数
            h=i;//记录前一个i,(i-h)就课以得到发工资都相同得天数
        }
        if(i!=n){//如果不相等就说明sum小于真实值,就是不满足下一个同样工资得天数!=(i-h)个;
            sum+=(n-h)*l;//将剩余得加起来;
        }
        System.out.println(sum);
    }
}

题目描述
Applese有个神奇的能力,TA可以把m个硬币融合成1个硬币,是不是很厉害。现在Applese有n个硬币,TA想把这个n个硬币融合成1个,请问他能完成吗?

输入描述:
输入两个整数n,m(1 ≤ n, m ≤ 109)
输出描述:
如果Applese能完成,输出"Yes",否则输出"No"。

代码实现:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        if (m + n == 2 || m != 1 && ((n - 1) % (m - 1)) == 0){
            System.out.print("Yes");
        }else{
            System.out.print("No");
        }
    }
}

你可能感兴趣的:(算法练习,算法,java)