前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java_质数_两种解法(时间对比)

Java_质数_两种解法(时间对比)

作者头像
红目香薰
发布2022-11-29 17:29:06
4050
发布2022-11-29 17:29:06
举报
文章被收录于专栏:CSDNToQQCode

Java_质数

什么是质数:

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

测试两个求质数的方式:

测试数据一、测试数量【10万】

方式一:Boolean

代码语言:javascript
复制
/**                                           
 * 1、100000以内的质数                              
 */                                           
int num=10000;                                
long start = System.currentTimeMillis();      
for (int i = 2; i <= num; i++) {              
	boolean b=true;                           
	for (int j = 2; j <i; j++) {              
		if(i%j==0){                           
			b=false;                          
			break;                            
		}                                     
	}                                         
	if(b){                                    
		System.out.println(i);                
	}                                         
}                                             
long end = System.currentTimeMillis();        
System.out.println("第一种用时:"+(end-start)+"毫秒");

方式二:【&】

代码语言:javascript
复制
int num=10000;                                     
long start1 = System.currentTimeMillis();          
for(int i=2;i<=num;i++) {			               
    for(int j=2;j<=i;j++) {                        
        if(i%j==0 && i!=j) {                       
            break;					               
        }                                          
        if(j==i) {                                 
            System.out.println(i);					
        }				                           
    }                                              
}                                                  
long end1 = System.currentTimeMillis();            
System.out.println("第二种用时:"+(end1-start1)+"毫秒");   

测试的时候中间加上【gc】啊

代码语言:javascript
复制
System.gc();

对比图:【去掉输出】

总结:两者相较差不多,所以那种都可以。

测试数据二、【1000000】百万

测试编码:

代码语言:javascript
复制
package test;

public class Action {
	public static void main(String[] args) {
		/**
		 * 1、100000以内的质数
		 */
		int num=1000000;
		long start = System.currentTimeMillis();
		for (int i = 2; i <= num; i++) {
			boolean b=true;
			for (int j = 2; j <i; j++) {
				if(i%j==0){
					b=false;
					break;
				}
			}
			if(b){
//				System.out.println(i);
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("第一种用时:"+(end-start)+"毫秒");
		System.gc();
		long start1 = System.currentTimeMillis();
		for(int i=2;i<=num;i++) {			
            for(int j=2;j<=i;j++) {
                if(i%j==0 && i!=j) {
                    break;					
                }
                if(j==i) {
//                    System.out.println(i);					
                }				
            }
        }
		long end1 = System.currentTimeMillis();
		System.out.println("第二种用时:"+(end1-start1)+"毫秒");
	}
}

效果:

基本上可以看出来,第二种的方式消耗时间还是稍微多一点点的。

希望能对大家有所帮助

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java_质数
    • 测试两个求质数的方式:
    • 测试数据一、测试数量【10万】
      • 方式一:Boolean
        • 方式二:【&】
        • 测试数据二、【1000000】百万
          • 测试编码:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档