Java 质数输出的经典算法题面试可以用

数输出的实现方式一

package work.com.cn.entity;
/*
100以内的所有质数的输出。
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

最小的质数是:2
*/

public class PrimeNumberTest {
    public static void main(String[] args) {
        boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值 isFlag 可以放在里边就不用重置
        for(int i = 2;i<100; i++){
           // boolean isFlag = true;
            for(int j =2;j<i;j++){
                if(i % j ==0){
                    isFlag = false;
                }

            }
            if(isFlag == true){
                System.out.println(i);
            }
            //重置isFlag
            isFlag = true;
        }
    }

}

质数输出的算法优化一

/*
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

	}
}

质数输出的算法优化二

/*
100000以内的所有质数的输出。实现方式二
质数:素数,只能被1和它本身整除的自然数。–>从2开始,到这个数-1结束为止,都不能被这个数本身整除。

对PrimeNumberTest.java文件中质数输出问题的优化
*/
class PrimeNumberTest2 {
public static void main(String[] args) {

  int count = 0;//记录质数的个数

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

  label:for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数
  	
  	for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除
  		
  		if(i % j == 0){ //i被j除尽
  			continue label;
  		}
  		
  	}
  	//能执行到此步骤的,都是质数
  	count++;
  
  }

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

}

}

break和continue的基本使用

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

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



*/
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 PrimeNumberTest2 {
     
     
	public static void main(String[] args) {
     
     
		
		
		int count = 0;//记录质数的个数

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

		label:for(int i = 2;i <= 100000;i++){
     
     //遍历100000以内的自然数
			
			for(int j = 2;j <= Math.sqrt(i);j++){
     
     //j:被i去除
				
				if(i % j == 0){
     
      //i被j除尽
					continue label;
				}
				
			}
			//能执行到此步骤的,都是质数
			count++;
		
		}

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

	}
}

猜你喜欢

转载自blog.csdn.net/liufeifeihuawei/article/details/109520862