Java语法基础六(续题)

本文介绍了如何使用Java编程找出水仙花数,如9474, 153和370一共三个数,同时展示了判断质数的方法,以及求解101到205之间的质数。后续内容涉及计算最大公约数与最小公倍数,以及特定范围内数字之和为5的整数统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7、打印出所有的水仙花数


做这一道题,首先得知道水仙花数是什么?水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身

那知道了水仙花数直接把它拆分,分为百位、十位、个位,分别求出输入数据的各个位数的数据即可,直接把条件自身i==百位数的三次方+十位数的三次方+个位数的三次方,进行判断就能输出

package com.yan3;

public class Test10 {

	public static void main(String[] args) {
		// 9、打印出所有的水仙花数
//		for (int i = 100; i < 1000; i++) {
//			int bai = i / 100;
//			int shi = i / 10 % 10;
//			int ge = i % 10;
//			if (i == Math.pow(bai, 3) + Math.pow(shi, 3) + Math.pow(ge, 3))
//				System.out.println("水仙花数为" + i);
//		}
		int i = 100;
		while (++i < 1000) {
			int a = i / 100;
			int b = i / 10 % 10;
			int c = i % 10;
			if (i == Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3))
				System.out.println("水仙花数为" + i);
		}

	}

}

8、判断一个数是否为质数(附加题:编程求出101到205中的所有质数)


首先用Scanner录入数据,用布尔类型进行true和false的判断,直接把false赋给输入数据对k求余为0的input,然后break;结束本次循环;根据判断结果输出提示信息即可

求一个范围内的质数,直接for循环把范围一定义,判断是质数的数据直接输出即可

package com.yan3;

import java.util.Scanner;

public class Test11 {

	public static void main(String[] args) {
		// 10、判断一个数是否质数
		// 质数是指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数
		// 质数还有一个特点,就是它总是等于 6x-1 或者 6x+1,其中 x 是大于等于1的自然数。

		// 键盘录入一个整数
		int input = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个大于1的自然数:");
		while (true) {
			input = sc.nextInt();
			if (input <= 1)
				System.out.println("输入的数据不合法");
			else {
				break;
			}
		}
		// 判断是否有>=2并且<自身的因数
		boolean zhiShu = true;
		for (int k = 2; k < input; k++) {
			if (input % k == 0) {
				zhiShu = false;
				break;
			}
		}
		// 根据判断结果输出提示信息
		if (zhiShu)
			System.out.println(input + "是质数");
		else
			System.out.println(input + "不是质数");

	}

}
package com.yan3;

public class Test12 {

	public static void main(String[] args) {
		// 11、编程求出自然数101-205中的所有质数

		int count = 0;
		for (int k = 101; k <= 205; k++) {
			boolean zhiShu = true;
			for (int j = 2; j < k; j++) {
				if (k % j == 0) {
					zhiShu = false;
					break;
				}
			}
			if (zhiShu) {
				System.out.print(k + "\t");
				count++;
				if (count % 6 == 0)
					System.out.println();
			}
		}
		System.out.println("\n" + "101到205有质数" + count + "个");
	}

}

9、输入两个正整数m和n,求其最大公约数和最小公倍数


用Scanner录入数据,输入的数据是正整数,用while循环把不合法的数据重新输入;最大公约数先比较两个正整数的大小,用小的一方进行尝试,直接作为除数,用两个正整数对小的一方进行求余,用&&同真则真,从大到小用for循环,可以得到最大公约数,用break;结束本次循环;最小公倍数从两个偏大的一方,作为被除数,对两个正整数取余,和最大公约数差不多的步骤,得到最小公倍数

package com.yan3;

import java.util.Scanner;

public class Test13 {

	public static void main(String[] args) {
		// 12、输入两个正整数m和n,求其最大公约数和最小公倍数
		// 输入数据,要求正整数
		Scanner sc = new Scanner(System.in);
		int m = 0;
		System.out.println("请输入第一个正整数:");
		while (true) {
			m = sc.nextInt();
			if (m < 0)
				System.out.println("输入的数据不合法,请重新输入");
			else
				break;
		}
		int n = 0;
		System.out.println("请输入第二个正整数:");
		while (true) {
			n = sc.nextInt();
			if (n < 0)
				System.out.println("输入的数据不合法,请重新输入");
			else
				break;
		}
		// 获取最大公约数
		// 从两个数的较小一方开始进行尝试,如果两个都能整除则是最大公约数
		int yueShu = -1;
		int min = Math.min(m, n);
		for (int k = min; k > 1; k--) {
			if (m % k == 0 && n % k == 0) {
				yueShu = k;
				break;
			}
		}
		// 获取最小公倍数
		int beiShu = -1;
		int max = Math.max(m, n);
		for (int k = max; k <= m * n; k++) {
			if (k % m == 0 && k % n == 0) {
				beiShu = k;
				break;
			}
		}

		// 输出
		if (yueShu == -1)
			System.out.println(m + "和" + n + "互质,最大公约数为 1 ");
		else
			System.out.println(m + "和" + n + "的最大公约数为 " + yueShu);
		if (beiShu != -1)
			System.out.println(m + "和" + n + "的最小公倍数为 " + beiShu);

	}

}

10、100到50000之间有多少整数,其各位数字之和为5,分别是哪些数字,并统计满足条件的整数有多少个


跟水仙花数很类似

package com.yan3;

public class Test14 {

	public static void main(String[] args) {
		// 13、100 ~ 50000之间有多少整数,其各位数字之和为5,分别是哪些数
		// (例如整数1324的各位数字之和为 1+3+2+4 等于10(不为5)),并统计
		// 满足条件的整数有多少个
		int count = 0;
		for (int i = 100; i <= 50000; i++) {
			int wan = i / 10000;
			int qian = i / 1000 % 10;
			int bai = i / 100 % 10;
			int shi = i / 10 % 10;
			int ge = i % 10;
			if (wan + qian + bai + shi + ge == 5) {
				System.out.print(i + "\t");
				count++;
				if (count % 6 == 0)
					System.out.println();
			}
		}
		System.out.println("100 ~ 50000之间有 " + count + " 个整数,其各位数字之和为5");
	}

}

11、鸡兔同笼共80个头,208只脚,鸡和兔各有几只


用两个for循环也可以,用一个for循环和条件判断语句if都能计算出

都是用int i,j; //鸡兔的数量i+j=100;  2*i+4*j=208;这两个条件进行判断

package com.yan3;

public class Test15 {

	public static void main(String[] args) {
		// 14、鸡兔同笼共80个头,208只脚,鸡和兔各有几只
//		int i, j;
//		for (i = 1; i <= 80; i++) {
//			j = 80 - i;
//			if (2 * i + 4 * j == 208)
//				System.out.println("鸡有" + i + "只,兔有" + j + "只");
//		}

		for (int i = 0; i <= 80; i++) {
			for (int k = 0; k <= 80 - i; k++) {
				if (i + k == 80 && 2 * i + 4 * k == 208)
					System.out.println("鸡有" + i + "只," + "兔有" + k + "只");
			}
		}

	}

}

12、鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何


跟鸡兔同笼类似

package com.yan3;

public class Test16 {

	public static void main(String[] args) {
		// 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,
		// 问鸡翁、鸡母、鸡雏各几何
//		int i, j, k;
//		for (i = 0; i <= 100; i++) {
//			for (j = 0; j <= 100; j++) {
//				k = 100 - i - j;
//				if (k != 0)
//					if (k % 3 == 0)
//						if (5 * i + 3 * j + k / 3 == 100)
//							System.out.println("鸡翁" + i + "只,鸡母" + j + "只,鸡雏" + k);
//
//			}
//		}

		for (int i = 0; i <= 100; i++) {
			for (int k = 0; k <= 100 - i; k++) {
				for (int m = 0; m <= 100 - i - k; m++) {
					if (m % 3 == 0) {
						if (i + k + m == 100 && 5 * i + 3 * k + m / 3 == 100)
							System.out.println("鸡翁有" + i + "只,鸡母有" + k + "只,鸡雏有" + m + "只");
					}

				}
			}
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值