JAVA项目二-拓展训练4

该博客介绍了Java编程基础的三个练习:1.通过循环和数字拆分实现水仙花数的打印;2.利用闰年规则输出指定范围内的所有闰年;3.编写程序检测输入整数是否为素数。通过这些实例,读者可以巩固Java的基础知识和逻辑思维能力。
摘要由CSDN通过智能技术生成

打好Java编程基础(拓展训练)

任务1、打印水仙花数

  • 所谓水仙花数,是指等于其各位数字立方和的三位数
    在这里插入图片描述
  • 分析问题,首先水仙花数是三位数,那么我们可以确定范围:[100, 999],这个我们可以通过循环结构来搞定:
for (int n = 100; n <= 999; n++) {
    ...
}

  • 然后对于这个范围的每个数n,我们要去判断它是否等于其各位数字的立方和,这里的难点或关键在于如何分解一个三位数,得到它的每位数字
  • 假设我们已经把三位数n分解成百位数p3,十位数p2,个位数p1,这样我们的筛选条件就可以写出来:n == p3 * p3 * p3 + p2 * p2 * p2 + p1 * p1 * p1。
  • 如何拆分一个三位数n(375)呢?
  • 首先求n的个位数:n % 10 = 375 % 10 = 5
    然后要将三位数变成两位数:n = n / 10 = 375 / 10 = 37;
    对于新的两位数n,又求它的个位数:n % 10 = 37 % 10 = 7
    然后要将两位数变成一位数:n = n / 10 = 37 / 10 = 3;
  • 我们可以交替使用求余和整除运算将一个三位数拆分,得到它的个位数、十位数和百位数。当然这个分解方法可以推广到任何多位数的拆分

(1)代码编写

/**
 * 打印水仙花数
 */
public class t06 {
    public static void main(String[] args) {
        int x = 0; //定义水仙花数的个数
        for(int i=100; i<=999; i++){
            int a = i/100; //百位
            int b = (i-100*a)/10; //十位
            int c = (i-b*10-a*100); //个位
            if(i == a*a*a+b*b*b+c*c*c){
                x++;//每次符合水仙花数条件,则x+1;
                System.out.println(i + " = " + a+"^3 + " + b +"^3 + "+ c+"^3"); //输出符合条件的数
            }
        }
        System.out.println("水仙花数总共有"+x+"个"); //输出水仙花数的总数
    }
}

(2)输出结果

在这里插入图片描述

任务2、输出指定范围内的闰年

  • 输出[2000, 2500]内的全部闰年,要求每行输出5个年份

(1)代码编写

/**
 * 输出指定范围内的闰年
 * @date 2022-06-08
 * @description
 */
public class t07 {
    public static void main(String[] args) {

        //定义部分
        int i=0;
        int count = 0;

        System.out.println("下列数字为【2000~2500】年中的闰年:");

        //处理部分
        for(i=2000;i<=2500;i++)
        {
            if(i%4==0&&i%100!=0)
            {
                System.out.print(i + "\t");

                //按五个一行输出
                count++;
                if (count % 5==0) System.out.println();
            }
            else if(i%400==0)
            {
                System.out.print(i + "\t");

                //按五个一行输出
                count++;
                if (count % 5==0) System.out.println();
            }
        }
    }
}

(2)输出结果

在这里插入图片描述

任务3、判断一个整数是不是素数

  • 输入一个整数,判断它是不是素数

(1)代码编写

import java.util.Scanner;

/**
 * 判断一个整数是不是素数
 * @date 2022-06-08
 * @description
 */
public class t08 {
    public static void main(String[] args) {
        int x;
        Scanner sc = new Scanner(System.in);

        boolean isPr;

        System.out.print("输入一个整数:");
        x = sc.nextInt();

        isPr = true;
        for  (int i = 2; i <= Math.sqrt(x); i++) {
            if (x % i == 0) {
                isPr = false;//不是素数
                break;//跳出循环
            }
        }
        //对1单独处理
        if (x == 1) {
            System.out.println("1既不是素数,也不是合数。");
        } else if (x > 1) {
            if (isPr == true) {
                System.out.println(x + "是素数。");
            } else {
                System.out.println(x + "不是素数。");
            }
        }
    }
}

(2)输出结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值