找到Java中长整型(long)所能表示的最大素数: 9223372036854775783
前言
素数在信息安全领域经常被用于数据摘要或密钥的生成算法中,为了计算大素数也有很多的算法,本文只是通过最简单的算法找出在Java中long数据类型所能表示的最大素数。
算法
在Java中,long 是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808
(-2^63);
最大值是 9,223,372,036,854,775,807
(2^63 -1);
在表示时,在数字的末尾使用字母 L
或 l
表示,如 long a = 12345L
或 long 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相关推荐
- java整型_java中长整型定义
展开全部 Java的整型最大值e69da5e6ba9062616964757a686964616f31333337396166/长整型和短整型最大值及表示法定义代码:public class Damo ...
- java中将整型转换为字符型_JAVA的整型与字符串相互转换
JAVA的整型与字符串相互转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Int ...
- 深入理解Java的整型类型:如何实现2+2=5?
先看下这段神奇的Java代码: public static void main(String[] args) throws Exception {doSomethingMagic();System.o ...
- [小技巧][JAVA][转换]整型int与字符char相互转换
借助String.valueOf()过渡 char -> String ->int char c; String str = String.valueOf(c); int i = Inte ...
- c语言中长整型的作用,C语言,整形和长整型都占四个字节?
C语言中,整型常量和长整型常量,有什么区别? 整型常量和长整型常量(包括有符号的和无符号的),为什么占用字节数和一.指代不同 整型常量:是通常的整数,包括正整数.负整数和0,其数据类型显然是整型. 长 ...
- java长整型时间转日期_C#长整型时间与java长整型时间转换
最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...
- Java中整型的缓存机制
本文将介绍Java中Integer的缓存相关知识.这是在Java 5中引入的一个有助于节省内存.提高性能的功能.首先看一个使用Integer的示例代码,从中学习其缓存行为.接着我们将为什么这么实现以及 ...
- java 取整型的低八位_Java 基础(十五)并发工具包 concurrent
本文目录: java.util.concurrent - Java 并发包简介 阻塞队列 BlockingQueue 数组阻塞队列 ArrayBlockingQueue 延迟队列 DelayQueue ...
- java短整型_JAVA个基本数据类型
Java有8大基本数据类型,分别是: 1).字节类型:byte Byte数据类型是8位 取值范围:(-128 - 127) 默认值:0 byte a= 100; byte b = -20; 2).短整 ...
- java短整型_Java的基本数据类型
变量就是用来储存值而保留的内存位置.这就意味着当创建一个变量时就会在内存中占用一定的空间. 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中.因此,通过给变量分配不同的数据类 ...
最新文章
- python pip 报错 Command “python setup.py egg_info“ failed with error code 1 解决方法
- RabbitMQ简介及其安装
- mfc对话框的二次切分
- MATLAB中sort函数对矩阵数进行排序
- 元素、属性、标题、段落、文本格式化
- gulp + webpack 构建多页面前端项目 1
- pipline中替换tag变量
- 快速查询DB Lock的方法
- 项目实战-药品采购系统-day01
- 判断一棵树是否是一颗完全二叉树☆
- ios测试游戏用什么软件,《超维对决》iOS测试安装说明
- 跨境ERP服务商紧随“借卖网”遭黑客攻击,猖獗犯罪下如何自保?
- 关于spyder打不开的问题
- 为什么java数值型的负数比正数多一位
- 测试点击屏幕次数的软件_一款让安卓手机更好用的软件——fooView
- buildroot制作树莓派CM3的系统
- 督办管理系统——让企业工作落实到位
- Tiny210(S5PV210) U-BOOT(五)----Nand Flash源码分析
- sudo -s sudo su
- 谷歌宣布将收购云存储服务提供商Elastifile 完成后并入谷歌云
热门文章
- 毕业5年决定你的命运 --------值得所有不甘平庸的人看看
- python apkg,Python 自动加固APK
- 复制PS图层的样式到其它图层
- 《老路用得上的商学课》31-35学习笔记
- matlab截掉空间曲面一部分,用Matlab作空间曲面的切平面及法线图像.ppt
- 微信小程序调用域名服务器的服务
- 【ADNI】数据预处理(6)ADNI_slice_dataloader ||| show image
- Windows 10 让所有程序默认为“以管理员身份运行”并且取消“确认”按钮
- POI填充Excel背景色
- 计算机老掉线 路由器网络,路由器无线掉线怎么办?