前言

素数在信息安全领域经常被用于数据摘要或密钥的生成算法中,为了计算大素数也有很多的算法,本文只是通过最简单的算法找出在Java中long数据类型所能表示的最大素数。

算法

在Java中,long 是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
在表示时,在数字的末尾使用字母 Ll 表示,如 long a = 12345Llong b = 54321l,但是由于"l"容易与数字"1"混淆,不易区分,所以推荐使用大写的 L 表示。
我们在查找时,从最大值开始,只比对所有的奇数,每次减少2,直到找到为止。而查找方法使用的是逐个比较法,即将待判断的数 n 与在 [2, sqrt(n)] 范围内的所有整数逐个取余计算。

实现代码

public class DHTest {public static void main(String[] args) throws Exception { long n =  9_223_372_036_854_775_807L;while (true) {if (is_prime(n)) {println("n = ", n);break;}n -= 2;}println("done");}static boolean is_prime(long n) {int count = 0;boolean isPrime = true;long limit = (long) Math.sqrt(n);for (long i = 2; i < limit + 1; i++) {count ++;if (n % i == 0) {isPrime = false;break;}}System.out.println((isPrime ? "O" : "X") + ", tests = " + count + ", limit = " + limit);return isPrime;}
}

结果

X, test count = 6, limit = 3037000499
X, test count = 4, limit = 3037000499
X, test count = 2, limit = 3037000499
X, test count = 156, limit = 3037000499
X, test count = 16, limit = 3037000499
X, test count = 2, limit = 3037000499
X, test count = 4, limit = 3037000499
X, test count = 6, limit = 3037000499
X, test count = 2, limit = 3037000499
X, test count = 10, limit = 3037000499
X, test count = 12, limit = 3037000499
X, test count = 2, limit = 3037000499
O, test count = -1257966798, limit = 3037000499
n = 9223372036854775783
done

通过以上计算,我们可以找到Java中 long 所能表示的最大素数为 9,223,372,036,854,775,783

找到Java中长整型(long)所能表示的最大素数: 9223372036854775783相关推荐

  1. java整型_java中长整型定义

    展开全部 Java的整型最大值e69da5e6ba9062616964757a686964616f31333337396166/长整型和短整型最大值及表示法定义代码:public class Damo ...

  2. java中将整型转换为字符型_JAVA的整型与字符串相互转换

    JAVA的整型与字符串相互转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Int ...

  3. 深入理解Java的整型类型:如何实现2+2=5?

    先看下这段神奇的Java代码: public static void main(String[] args) throws Exception {doSomethingMagic();System.o ...

  4. [小技巧][JAVA][转换]整型int与字符char相互转换

    借助String.valueOf()过渡 char -> String ->int char c; String str = String.valueOf(c); int i = Inte ...

  5. c语言中长整型的作用,C语言,整形和长整型都占四个字节?

    C语言中,整型常量和长整型常量,有什么区别? 整型常量和长整型常量(包括有符号的和无符号的),为什么占用字节数和一.指代不同 整型常量:是通常的整数,包括正整数.负整数和0,其数据类型显然是整型. 长 ...

  6. java长整型时间转日期_C#长整型时间与java长整型时间转换

    最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...

  7. Java中整型的缓存机制

    本文将介绍Java中Integer的缓存相关知识.这是在Java 5中引入的一个有助于节省内存.提高性能的功能.首先看一个使用Integer的示例代码,从中学习其缓存行为.接着我们将为什么这么实现以及 ...

  8. java 取整型的低八位_Java 基础(十五)并发工具包 concurrent

    本文目录: java.util.concurrent - Java 并发包简介 阻塞队列 BlockingQueue 数组阻塞队列 ArrayBlockingQueue 延迟队列 DelayQueue ...

  9. java短整型_JAVA个基本数据类型

    Java有8大基本数据类型,分别是: 1).字节类型:byte Byte数据类型是8位 取值范围:(-128 - 127) 默认值:0 byte a= 100; byte b = -20; 2).短整 ...

  10. java短整型_Java的基本数据类型

    变量就是用来储存值而保留的内存位置.这就意味着当创建一个变量时就会在内存中占用一定的空间. 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中.因此,通过给变量分配不同的数据类 ...

最新文章

  1. python pip 报错 Command “python setup.py egg_info“ failed with error code 1 解决方法
  2. RabbitMQ简介及其安装
  3. mfc对话框的二次切分
  4. MATLAB中sort函数对矩阵数进行排序
  5. 元素、属性、标题、段落、文本格式化
  6. gulp + webpack 构建多页面前端项目 1
  7. pipline中替换tag变量
  8. 快速查询DB Lock的方法
  9. 项目实战-药品采购系统-day01
  10. 判断一棵树是否是一颗完全二叉树☆
  11. ios测试游戏用什么软件,《超维对决》iOS测试安装说明
  12. 跨境ERP服务商紧随“借卖网”遭黑客攻击,猖獗犯罪下如何自保?
  13. 关于spyder打不开的问题
  14. 为什么java数值型的负数比正数多一位
  15. 测试点击屏幕次数的软件_一款让安卓手机更好用的软件——fooView
  16. buildroot制作树莓派CM3的系统
  17. 督办管理系统——让企业工作落实到位
  18. Tiny210(S5PV210) U-BOOT(五)----Nand Flash源码分析
  19. sudo -s sudo su
  20. 谷歌宣布将收购云存储服务提供商Elastifile 完成后并入谷歌云

热门文章

  1. 毕业5年决定你的命运 --------值得所有不甘平庸的人看看
  2. python apkg,Python 自动加固APK
  3. 复制PS图层的样式到其它图层
  4. 《老路用得上的商学课》31-35学习笔记
  5. matlab截掉空间曲面一部分,用Matlab作空间曲面的切平面及法线图像.ppt
  6. 微信小程序调用域名服务器的服务
  7. 【ADNI】数据预处理(6)ADNI_slice_dataloader ||| show image
  8. Windows 10 让所有程序默认为“以管理员身份运行”并且取消“确认”按钮
  9. POI填充Excel背景色
  10. 计算机老掉线 路由器网络,路由器无线掉线怎么办?