输入两个正整数m和n,求其最大公约数和最小公倍数
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; } } }
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
1. 不在循环条件部分限制次数的结构:for( ; ; ) 或 while(true)2. 结束循环有几种方式? 方式一:循环条件部分返回false 方式二:在循环体中,执行breakclass ForWhileTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int positiveNumber = 0;//记录正数的个数 int negativeNumber = 0;//记录负数的个数 for(;;){//while(true){ int number = scan.nextInt(); //判断number的正负情况 if(number > 0){ positiveNumber++; }else if(number < 0){ negativeNumber++; }else{ //一旦执行break,跳出循环 break; } } System.out.println("输入的正数个数为:" + positiveNumber); System.out.println("输入的负数个数为:" + negativeNumber); }}
输出菱形
* * * * * * * * * * * * * * * * * * * * * * * * * public static void main(String [] args){ //控制输出前五行 for(int i=1;i<=5;i++){ //控制每一行空白输出 for(int j=1;j<=5-i;j++){ System.out.print(" "); } //控制每一行星号输出 for(int j=1;j<=i;j++){ System.out.print("* "); } System.out.println(); } //控制输出后四行 for(int i=1;i<=4;i++){ for(int j=1;j<=i;j++){ System.out.print(" "); } for(int j=1;j<=5-i;j++){ System.out.print("* "); } System.out.println(); }}
100以内的所有质数的输出
100以内的所有质数的输出:质数=素数:只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。最小的质数是:2方式一:(效率较低) public static void main(String[] args) { //获取当前时间距离1970-01-01 00:00:00 的毫秒数 long start = System.currentTimeMillis(); boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值 for(int i = 2;i <= 100;i++){//遍历100以内的自然数 for(int j = 2; j < i ;j++){//j:被i去除 if(i % j == 0){ //i被j除尽 isFlag = false; //break;[3](但凡实数本身可以被非1和本身以外的数整除,就直接确定为非素数,直接跳出循环) } } if(isFlag == true){ System.out.println(i); } isFlag = true; //重置isFlag //获取当前时间距离1970-01-01 00:00:00 的毫秒数 long end = System.currentTimeMillis(); System.out.println("所花费的时间为:" + (end - start)); } }方式二: label:for(int i = 2;i <= 100;i++){ for(int j = 2;j <= Math.sqrt(i);j++){ if(i % j == 0){ continue label;//与break不同点为:break跳出内循环继续向下执行,continue直接跳到外层循环 } } //能执行到此步骤的,都是质数(break无论是否为质数都会执行到此处) System.out.println(i); }- - - - - - - - - - - - - - - - - - - - - [刷新][1]用于测量程序运行时间;[2] for(int j = 2; j <= Math.sqrt(i); j++)-------优化一:对本身是质数的自然数是有效的。[3] 优化二:只对本身非质数的自然数是有效的。