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

  1. public static void main(String[] args){
  2. Scanner scan = new Scanner(System.in);
  3. System.out.println("请输入第一个正整数:");
  4. int m = scan.nextInt();
  5. System.out.println("请输入第二个正整数:");
  6. int n = scan.nextInt();
  7. //获取最大公约数
  8. //1.获取两个数中的较小值
  9. int min = (m <= n)? m : n;
  10. //2.遍历
  11. for(int i = min;i >= 1 ;i--){
  12. if(m % i == 0 && n % i == 0){
  13. System.out.println("最大公约数为:" + i);
  14. break;//一旦在循环中执行到break,就跳出循环
  15. }
  16. }
  17. //获取最小公倍数
  18. //1.获取两个数中的较大值
  19. int max = (m >= n)? m : n;
  20. //2.遍历
  21. for(int i = max;i <= m * n;i++){
  22. if(i % m == 0 && i % n == 0){
  23. System.out.println("最小公倍数:" + i);
  24. break;
  25. }
  26. }
  27. }

从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

  1. 1. 不在循环条件部分限制次数的结构:for( ; ; ) while(true)
  2. 2. 结束循环有几种方式?
  3. 方式一:循环条件部分返回false
  4. 方式二:在循环体中,执行break
  5. class ForWhileTest {
  6. public static void main(String[] args) {
  7. Scanner scan = new Scanner(System.in);
  8. int positiveNumber = 0;//记录正数的个数
  9. int negativeNumber = 0;//记录负数的个数
  10. for(;;){//while(true){
  11. int number = scan.nextInt();
  12. //判断number的正负情况
  13. if(number > 0){
  14. positiveNumber++;
  15. }else if(number < 0){
  16. negativeNumber++;
  17. }else{
  18. //一旦执行break,跳出循环
  19. break;
  20. }
  21. }
  22. System.out.println("输入的正数个数为:" + positiveNumber);
  23. System.out.println("输入的负数个数为:" + negativeNumber);
  24. }
  25. }

输出菱形

  1. *
  2. * *
  3. * * *
  4. * * * *
  5. * * * * *
  6. * * * *
  7. * * *
  8. * *
  9. *
  10. public static void main(String [] args){
  11. //控制输出前五行
  12. for(int i=1;i<=5;i++){
  13. //控制每一行空白输出
  14. for(int j=1;j<=5-i;j++){
  15. System.out.print(" ");
  16. }
  17. //控制每一行星号输出
  18. for(int j=1;j<=i;j++){
  19. System.out.print("* ");
  20. }
  21. System.out.println();
  22. }
  23. //控制输出后四行
  24. for(int i=1;i<=4;i++){
  25. for(int j=1;j<=i;j++){
  26. System.out.print(" ");
  27. }
  28. for(int j=1;j<=5-i;j++){
  29. System.out.print("* ");
  30. }
  31. System.out.println();
  32. }
  33. }

100以内的所有质数的输出

  1. 100以内的所有质数的输出:
  2. 质数=素数:只能被1和它本身整除的自然数。
  3. -->从2开始,到这个数-1结束为止,都不能被这个数本身整除。
  4. 最小的质数是:2
  5. 方式一:(效率较低)
  6. public static void main(String[] args) {
  7. //获取当前时间距离1970-01-01 00:00:00 的毫秒数
  8. long start = System.currentTimeMillis();
  9. boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
  10. for(int i = 2;i <= 100;i++){//遍历100以内的自然数
  11. for(int j = 2; j < i ;j++){//j:被i去除
  12. if(i % j == 0){ //i被j除尽
  13. isFlag = false;
  14. //break;[3](但凡实数本身可以被非1和本身以外的数整除,就直接确定为非素数,直接跳出循环)
  15. }
  16. }
  17. if(isFlag == true){
  18. System.out.println(i);
  19. }
  20. isFlag = true; //重置isFlag
  21. //获取当前时间距离1970-01-01 00:00:00 的毫秒数
  22. long end = System.currentTimeMillis();
  23. System.out.println("所花费的时间为:" + (end - start));
  24. }
  25. }
  26. 方式二:
  27. label:for(int i = 2;i <= 100;i++){
  28. for(int j = 2;j <= Math.sqrt(i);j++){
  29. if(i % j == 0){
  30. continue label;//与break不同点为:break跳出内循环继续向下执行,continue直接跳到外层循环
  31. }
  32. }
  33. //能执行到此步骤的,都是质数(break无论是否为质数都会执行到此处)
  34. System.out.println(i);
  35. }
  36. - - - - - - - - - - - - - - - - - - - - - [刷新]
  37. [1]用于测量程序运行时间;
  38. [2] for(int j = 2; j <= Math.sqrt(i); j++)-------优化一:对本身是质数的自然数是有效的。
  39. [3] 优化二:只对本身非质数的自然数是有效的。