6道基础编程题

Author Avatar
Ninefire 9月 11, 2018
  • 在其它设备中阅读本文章

人们都说这首纯音乐要从2:10的高潮开始听,听完高潮回过来重新听了一遍才发现最喜欢的其实是前面那段安静柔和的部分,只是看了评论一味地等到2:10,才发现错过了最美好的。人真的不该盲从,静下心聆听,自己喜欢就好。

编写应用程序求1! + 2! + … + 10!

public class Demo01 {

    /** 编写应用程序求1! + 2! + ... + 10! **/
    public static void main(String[] args) {

        long sum = 0, pro = 1;

        for(int i = 1; i <= 10; i++) {
            pro *= i;
            sum += pro;
        }

        System.out.println("计算结果是:" + sum);
    }
}

编写一个应用程序求100以内的全部素数

public class Demo02 {
    /** 编写一个应用程序求100以内的全部素数 **/

    public static void main(String[] args) {
        // 定义一个变量,存放当前正在判断的数是否是素数
        boolean flag = true;

        for (int i = 2; i <= 100; i++) {

            // Math.sqrt(i)方法用来计算i的平方根,直接写i也可以,但会增加时间复杂度
            for(int j = 2; j <= Math.sqrt(i); j++) {

                if(i % j == 0) {
                    // 一旦进入判断,说明i不是素数,flag = false,且break停止循环
                    flag = false;
                    break;
                }

                // 没有进入判断,flag = true,并继续循环
                flag = true;
            }

            // 根据flag判断并输出结果
            if(flag) System.out.print(i + "  ");
        }
    }
}

分别用do-while好for循环计算1+1/2!+1/3!+1/4!+…的前20项

public class Demo03 {
    /** 分别用do-while好for循环计算1+1/2!+1/3!+1/4!+...的前20项 **/
    public static void main(String[] args) {

        // 使用do-while计算
        double sum1 = 1.0;
        int i = 2;
        do {
            sum1 += 1.0 / factorial(i);
            i++;
        } while(i <= 20);

        // 使用for计算
        double sum2 = 1.0;
        for(int j = 2; j <= 20; j++) {
            sum2 += 1.0 / factorial(j);
        }

        // 输出结果
        System.out.println(sum1);
        System.out.println(sum2);
    }

    // 阶乘方法
    private static long factorial(int n) {
        long pro = 1;
        for(int i = 1; i <= n; i++)
            pro *= i;
        return pro;
    }
}

编写应用程序求1000之内的所有完数

public class Demo04 {
    /** 编写应用程序求1000之内的所有完数 **/
    // 主方法
    public static void main(String[] args) {
        for (int i = 1; i <= 1000; i++) {

            // 调用方法判断i是否为完数
            if( isPerfectNumber(i) ) {

                // 进入判断则输出i
                System.out.print(i + "  ");
            }
        }
    }

    // 判断一个数是否是完数的方法
    static boolean isPerfectNumber(int num) {

        // 定义变量存放因子之和
        int sum = 0;

        // 计算因子之和
        for(int i = 1; i < num; i++) {
            if(num%i == 0)
                sum += i;
        }

        // 判断因子之和是否与原数相等并返回布尔值结果
        if(sum == num)
            return true;
        else
            return false;
    }
}

编写应用程序,使用for循环语句计算8 + 88 + 888 + … 前十项

public class Demo05 {
    /** 编写应用程序,使用for循环语句计算8 + 88 + 888 + ... 前十项 **/
    public static void main(String[] args) {
        int n = 8;
        long sum = 0;

        for(int i = 0; i < 10; i++) {

            /*
              经过分析:
              1      2           3            4
              8      88          888          8888
              sum=8  sum=8*10+8  sum=88*10+8  sum=888*10+8
            */

            sum += sum * 10 + n;
        }

        System.out.print(sum);
    }
}

编写应用程序,输出满足1 + 2 + 3 + … + n < 8888的最大正整数n

public class Demo06 {
    /** 编写应用程序,输出满足1 + 2 + 3 + ... + n < 8888的最大正整数n **/
    public static void main(String[] args) {

        int i = 1, sum = 0;

        while(sum < 8888) {
            sum += ++i;
        }

        System.out.println(sum-i);
        System.out.println(i-1);
    }
}

如发现错误请联系我,谢谢你。
本文链接:http://ninefire.tk/Java.basics/01.html