0基础java入门:第十四节.练习思路演示(判断素数)

0基础java入门:第十四节.循环与判断综合使用演示

可以将本章的题目看作是前边课程的综合练习。 每个题目都可以先自行思考和实现一下。再根据文章梳理一下思路。每一个程序都不一定只有一种实现方式,思路正确就可以。

1.数据筛选

使用循环和判断对一些符合条件的数据进行筛选:

1. 将1--100 之间能被 7 整除的整数 输出到控制台

思路分析:我们需要给 1--100 之间的所有数字进行判断,如果能被7整除就输出。

这里 很显然是一个 重复的过程,从题目中可以 知晓 从 1--100 是循环范围  即初始值是1 条件是<=100 步长是+1 。循环体中需要判断 数字是不是被7整除。

代码演示:

public class Demo1{
	public static void main(String[] args){
		// 初始值1 循环条件<=100 步长 +1
		for(int i=1;i<=100;i++){
			if(i%7==0){// 判断 是否被7整除
				System.out.println(i);
			}
		}
	}
}

运行结果:

2.将 1--100 之间能同时 被 3 和 7整除的整数 输出到控制台

代码演示:

public class Demo1{
	public static void main(String[] args){
		// 初始值1 循环条件<=100 步长 +1
		for(int i=1;i<=100;i++){
			if(i%7==0 && i%3==0){// 判断 是否被7和3整除
				System.out.println(i);
			}
		}
	}
}

运行结果:

3.将 1--100之间的所有整数,并判断每一个数字的 数字是奇数还是偶数,结果输出到控制台。

代码演示:

public class Demo1{
	public static void main(String[] args){
		// 初始值1 循环条件<=100 步长 +1
		for(int i=1;i<=100;i++){
			if(i%2==0){// 判断 是否是偶数
				System.out.println(i+"是偶数");
			}else{
				System.out.println(i+"是奇数");
			}
		}
	}
}

运行结果:

4.将 1--100 之间 3的倍数 和 7的倍数输出到控制台。

代码演示:

public class Demo1{
	public static void main(String[] args){
		// 初始值1 循环条件<=100 步长 +1
		for(int i=1;i<=100;i++){
			if(i%3==0&&i%7==0){
				System.out.println(i+"同时是3和7的倍数");
			}else if(i%3==0){// 判断 是否被3整除
				System.out.println(i+"是3的倍数");
			}else if(i%7==0){// 判断是否被7整除
				System.out.println(i+"是7的倍数");
			}
		}
	}
}

运行结果:

5将 1900 年到 2000 年之间所有的闰年年份输出到控制台。

思路分析:闰年是公历中的名词。闰年分为普通闰年和世纪闰年,普通闰年是能被4整除但不能被100整除的年份为普通闰年;世纪闰年是能被400整除的为世纪闰年。(如2000年是世纪闰年,1900年不是世纪闰年)

代码演示:

public class Demo1{
	public static void main(String[] args){
		// 初始值1900 循环条件<=2000 步长 +1
		for(int i=1900;i<=2000;i++){
			if(i%400==0 || (i%4==0&&i%100!=0)){
				System.out.println(i+"是闰年");
			}else {
				System.out.println(i+"不是闰年");
			}
		}
	}
}

运行结果:

2. 数据统计

1. 计算 1--100 之间能被3整除的数字的和是多少。

思路分析:我们需要先找出 1--100 之间能被3 整除的数字 ,之后把他们累加到一起。

代码演示:

public class Demo1{
	public static void main(String[] args){
		int  sum = 0; //定义一个变量 用来累加 所有数字
		// 初始值1 循环条件<=100 步长 +1
		for(int i=1;i<=100;i++){
			if(i%3==0){// 如果能被3整除
				sum+=i; // 用sum将所有的数字累加再一起
			}
		}
		// 最后输出结果
		System.out.println("1--100 之中能被3整除的数字和是"+sum);
	}
}

运行结果:

2. 计算1--100 之间能 同时被 3 和7 整除的数字有多少个。

思路分析:需要找到 1--100 之间能同时被 3和7整除的数字 ,之后统计有多少个这样的数字。

代码演示:

public class Demo1{
	public static void main(String[] args){
		int  count = 0; //定义一个变量 统计个数
		// 初始值1 循环条件<=100 步长 +1
		for(int i=1;i<=100;i++){
			if(i%3==0 && i%7==0){// 如果能被3和7整除
				count++; // 发现一个 count就+1
			}
		}
		// 最后输出结果
		System.out.println("1--100 之中能被3和7整除的数字有"+count+"个");
	}
}

运行结果:

3. 计算 1--1000 之间 能被3和5和7同时整除的数字的 有多少个 ?以及和是多少, 以及平均数是多少。

思路分析:平均数 就是和除以个数,所以我们统计出 个数与 和 之后就可以计算平均数了。

代码演示:

public class Demo1{
	public static void main(String[] args){
		int  count = 0; //定义一个变量 统计个数
		double sum = 0; //定义一个变量 统计和 用double类型 这样计算平均数时可以保留小数
		// 初始值1 循环条件<=1000 步长 +1
		for(int i=1;i<=1000;i++){
			if(i%3==0 && i%7==0 && i%5==0){// 如果能被3和7和5整除
				count++; // 发现一个 count就+1
				sum+=i;// 累加结果
			}
		}
		// 最后输出结果
		System.out.println("1--1000 之中能被3和7和5整除的数字有"+count+"个,和是"+sum+",他们的平均数是"+(sum/count));
	}
}

运行结果:

4. 计算 10 的阶乘结果是多少,结果输出页面。

思路分析:这里注意 阶乘结果就是把 1 到数值本省的所有整数 相乘 起来的结果。这里注意做的是乘法操作,所以统计变量的初始值不能是0 需要是1.

代码演示:

public class Demo1{
	public static void main(String[] args){
		int x = 10; // 定义变量x的任意赋值 计算这个值的阶乘结果 但是x值不要超过20
		// 以下代码计算 x的阶乘结果
		int  product = 1; //定义一个变量 统计乘积
		// 初始值1 循环条件<=x 步长 +1
		for(int i=1;i<=x;i++){
			product*=i;
		}
		// 最后输出结果
		System.out.println("x的阶乘结果是"+product);
	}
}

运行结果:

 

3. 确定一个数字是不是素数

素数:也就是质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

因数: 整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数。

比如  : 4 除了 1 和 4 意外 还能被 2 整除 所以4不是素数

              9 除了 1 和 9 以外 还能被 3 整除 所以9也不是素数

              向  2  3  5  7 这些数字 除了 1 和本身 之外再也不能被别的数字 整除。所以他们是素数。

思路分析: 从上边的表述种我们可以大概了解一个判断素数的逻辑。首先 素数必须大于1 小于1的数字都不是素数。其次大于1 的数字也需要 除去 1和本身不在被任何数字整除。而且我们可以看出 一个数字 能被整除的因子 只能出现再 2 到 这个数字的 平方根 之间。例如:判断x 是不是素数。x如果小于2 就不是素数 ,如果大于2还需要判断 x 再 2 -- x的平方根 之间的整数如果发生整除也不是素数。如果上述两种情况没有发生 x才是一个素数。

代码演示: 代码其实不多 ,主要注意看注释 分析代码。核心代码只有 六七行 。这时对逻辑与程序结合的一次最好的训练。

 

public class Demo1{
	public static void main(String[] args){
		// 素数
		int x = 11; // 定义一个变量 任意赋值。判断这个变量值是不是素数
		// 下边定义 布尔类型 b 看作是一个标记。如果b的值是 true 就表示x是素数 b的值是false 表示x不是素数
		boolean b = true; // 这里我们赋值为 true 默认我们认为所有的数字都是素数。
		// 下边开始正式判断 x 是不是素数
		// 1. x 如果小于2 就不是素数
		if(x<2){
			b = false; // x<2 成立的话,修改b为 false 表示x不是素数。
		}else{ //下边是 x<2 不成立的操作
		   // 2. 判断 从 2 到x的平方根 x会不会被整除
		   // 这里循环的初始值是2 条件是<=平方根 步长+1
		   for(int i = 2 ; i <= Math.sqrt(x) ; i++){ // 这里的Math.sqrt(x) 表示x的平方根
				if(x%i==0){ //判断 x是不是被整除
					b = false;// 如果被整除了 把b修改为false x不是素数。
					break;// 终止循环 因为只要被整除一次就不是 素数了 没必要继续循环了。
				}
		   }
		}
		// 最后判断 b 的值 是true就是素数否则不是素数
		if(b){
			System.out.println(x+"是素数");
		}else{
			System.out.println(x+"不是素数");
		}
	}
}

运行结果:

修改 x 的值 反复验证是否正确。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值