Java 基础循环练习题

/*
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。

说明:break关键字的使用:一旦在循环中执行到break,就跳出循环

*/

import java.util.Scanner;
class ForTest{

     public static void main(String[] args){
    
          Scanner scan = new Scanner(System.in);

          System.out.println("请输入第一个正整数:");
          int m = scan.nextInt();
         
          System.out.println("请输入第二个正整数:");
          int n = scan.nextInt();
         
          //获取最大公约数
          //1.获取两个数中的较小值
          int min = (m <= n)? m : n;
          //2.遍历
          for(int i = min;i >= 1 ;i--){
               if(m % i == 0 && n % i == 0){
                    System.out.println("最大公约数为:" + i);
                    break;//一旦在循环中执行到break,就跳出循环
               }
          }
         
          //获取最小公倍数
          //1.获取两个数中的较大值
          int max = (m >= n)? m : n;
          //2.遍历
          for(int i = max;i <= m * n;i++){
               if(i % m == 0 && i % n == 0){
                   
                    System.out.println("最小公倍数:" + i);
                    break;
              
               }
          }
          System.out.println(max)--max在while条件里面与for循环的作用域不同
     }

}

for和while循环总结:

  1. 开发中,基本上我们都会从for、while中进行选择,实现循环结构。
  2. for循环和while循环是可以相互转换的!
    区别:for循环和while循环的初始化条件部分的作用范围不同。
  3. 我们写程序,要避免出现死循环。

break和continue关键字的使用
使用范围 循环中使用的作用(不同点) 相同点
break: switch-case
循环结构中 结束当前循环 关键字后面不能声明执行语句

continue: 循环结构中 结束当次循环 关键字后面不能声明执行语句

break跳出最近的一层循环

/*
break和continue关键字的使用
使用范围 循环中使用的作用(不同点) 相同点
break: switch-case
循环结构中 结束当前循环 关键字后面不能声明执行语句

continue: 循环结构中 结束当次循环 关键字后面不能声明执行语句
*/

/*
嵌套循环的应用1:

九九乘法表
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
。。。
9 * 1 = 9 。。。 9 * 9 = 81
*/

class NineNineTable {
     public static void main(String[] args) {
         
          for(int i = 1;i <= 9;i++){
              
               for(int j = 1;j <= i;j++){
                    System.out.print(i + " * " + j + " = " + (i * j) + "  ");
               }

               System.out.println();
          }


     }
}
class BreakContinueTest {
     public static void main(String[] args) {

          for(int i = 1;i <= 10;i++){
         
               if(i % 4 == 0){
                    break;//123
                    //continue;//123567910
                    //System.out.println("今晚迪丽热巴要约我!!!");
               }
               System.out.print(i);
          }

          System.out.println("\n");
          //******************************
         
          label:for(int i = 1;i <= 4;i++){
         
               for(int j = 1;j <= 10;j++){
                   
                    if(j % 4 == 0){
                         //break;//默认跳出包裹此关键字最近的一层循环。
                         //continue;

                         //break label;//结束指定标识的一层循环结构
                         continue label;//结束指定标识的一层循环结构当次循环
                    }
                   
                    System.out.print(j);
               }
              
               System.out.println();
          }
     }
}

/*
100000以内的所有质数的输出。实现方式一
质数:素数,只能被1和它本身整除的自然数。–>从2开始,到这个数-1结束为止,都不能被这个数本身整除。
对PrimeNumberTest.java文件中质数输出问题的优化
*/

class PrimeNumberTest1 {
     public static void main(String[] args) {
         
          boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
          int count = 0;//记录质数的个数

          //获取当前时间距离1970-01-01 00:00:00 的毫秒数
          long start = System.currentTimeMillis();

          for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数
              
               //优化二:对本身是质数的自然数是有效的。
               //for(int j = 2;j < i;j++){
               for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除
                   
                    if(i % j == 0){ //i被j除尽
                         isFlag = false;
                         break;//优化一:只对本身非质数的自然数是有效的。
                    }
                   
               }
               //
               if(isFlag == true){
                    //System.out.println(i);
                    count++;
               }
               //重置isFlag
               isFlag = true;
         
          }

          //获取当前时间距离1970-01-01 00:00:00 的毫秒数
          long end = System.currentTimeMillis();
          System.out.println("质数的个数为:" + count);
          System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13

     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值