大于或小于100万,1000万,1亿,10亿,1000亿,万亿,亿亿,10亿亿,100亿亿上下的10个质数(素数)...

这篇博客列举了从100万到100亿亿各个数量级下的10个质数,包括M代表的百万、G代表的十亿、T代表的万亿以及P和E代表的更高数量级。内容来源于2019年的一篇转载,重点关注Python和Java领域的知识。
摘要由CSDN通过智能技术生成
大于或小于百万,千万,1亿,十亿,百亿,千亿,万亿,十万亿,百万亿,千万亿,亿亿,十亿亿,百亿亿上下的10个质数(素数)。
 
UINT32_MAX=4294967295 (10位, 42.9亿, 4.294E9)
UINT64_MAX=18446744073709551615(20位, 1884亿亿, 1.844E19,  18.84E),
进位制 Kilo Mega Giga Tera Peta Exa(1×10¹⁸) Zetta Yotta

M:百万, G:十亿,   T:万亿,   P:千万亿,  E:百亿亿。

 
1E, 1000000000000000000 , 5 >
     1000000000000000003 , 1000000000000000009 , 1000000000000000031 , 1000000000000000079 , 1000000000000000177 ,
     999999999999999989 , 999999999999999967 , 999999999999999877 , 999999999999999863 , 999999999999999829 ,
100P, 100000000000000000 , 5 > 
     100000000000000003 , 100000000000000013 , 100000000000000019 , 100000000000000021 , 100000000000000049 , 
     99999999999999997 , 99999999999999977 , 99999999999999961 , 99999999999999943 , 99999999999999919 ,
10P, 10000000000000000 , 5 > 
      10000000000000061 , 10000000000000069 , 10000000000000079 , 10000000000000099 , 10000000000000453 ,
      9999999999999937 , 9999999999999917 , 9999999999999887 , 9999999999999851 , 9999999999999817 ,
1P, 1000000000000000 , 5 > 
       1000000000000037 , 1000000000000091 , 1000000000000159 , 1000000000000187 , 1000000000000223 ,
       999999999999989 , 999999999999947 , 999999999999883 , 999999999999877 , 999999999999827 ,
100T, 100000000000000 , 5 > 
       100000000000031 , 100000000000067 , 100000000000097 , 100000000000099 , 100000000000133 ,
       99999999999973 , 99999999999971 , 99999999999959 , 99999999999931 , 99999999999929 ,
10T, 10000000000000 , 5 > 
       10000000000037 , 10000000000051 , 10000000000099 , 10000000000129 , 10000000000183 ,
       9999999999971 , 9999999999863 , 9999999999799 , 9999999999763 , 9999999999733 ,
1T, 1000000000000 , 5 > 
       1000000000039 , 1000000000061 , 1000000000063 , 1000000000091 , 1000000000121 ,
       999999999989 , 999999999961 , 999999999959 , 999999999937 , 999999999899 ,
100G, 100000000000 , 5 > 
       100000000003 , 100000000019 , 100000000057 , 100000000063 , 100000000069 , 99999999977 ,
       99999999947 , 99999999943 , 99999999907 , 99999999871 ,
10G, 10000000000 , 5 > 
       10000000019 , 10000000033 , 10000000061 , 10000000069 , 10000000097 , 9999999967 ,
       9999999943 , 9999999929 , 9999999881 , 9999999851 ,
1G, 1000000000 , 5 > 
       1000000007 , 1000000009 , 1000000021 , 1000000033 , 1000000087 , 999999937 , 999999929 ,
       999999893 , 9999998
### 回答1: 以下是一种示例代码: ``` import java.util.PriorityQueue; public class Top100Elements { public static void main(String[] args) { int[] data = new int[100000000]; // 假设data数组已经被初始化并赋值 PriorityQueue<Integer> top100 = new PriorityQueue<>(100, (a, b) -> b - a); for (int i : data) { if (top100.size() < 100) { top100.offer(i); } else if (i > top100.peek()) { top100.poll(); top100.offer(i); } } while (!top100.isEmpty()) { System.out.println(top100.poll()); } } } ``` 这段代码使用了`java.util.PriorityQueue`类,该类实现了一个优先队列,每次弹出的元素都是队列中最小的元素。我们通过在创建PriorityQueue对象时传入一个Comparator对象来修改元素的比较规则,使得每次弹出的都是队列中最大的元素。在遍历数组时,如果优先队列中元素数小于100,则直接将元素加入队列;否则,如果当前遍历到的元素比队列顶部的元素大,则弹出队列顶部的元素并将当前元素加入队列,这样就可以维护队列中始终是最大的100个数。最后,遍历优先队列,每次弹出元素即可得到最终的100个最大的数。 ### 回答2: 要在100亿数据中找出最大的一百个,可以使用堆排序算法实现。堆排序利用了堆的性质,能够以时间复杂度O(nlogn)找到最大的一百个数。 首先,我们创建一个大小为一百的最小堆,并将堆中的元素初始化为前一百个数据。然后,对于剩余的数据进行遍历,如果当前数据大于堆顶元素,则将堆顶元素替换为当前数据,并进行堆调整,以保证最小堆的性质依然成立。 接着,继续遍历剩余的数据,重复上述操作,直至遍历完成。最终,堆中的元素即为100亿数据中最大的一百个数。 下面是相应的Java代码示例: ```java import java.util.PriorityQueue; public class FindTop100 { public static void main(String[] args) { long[] data = new long[1000000000]; // 100亿数据,这里假设使用long类型 // 假设数据已经初始化完毕 PriorityQueue<Long> minHeap = new PriorityQueue<>(100); // 创建大小为一百的最小堆 for (int i = 0; i < 100; i++) { minHeap.offer(data[i]); // 初始化堆 } for (int i = 100; i < data.length; i++) { if (data[i] > minHeap.peek()) { minHeap.poll(); minHeap.offer(data[i]); } } // 输出最大的一百个数 while (!minHeap.isEmpty()) { System.out.println(minHeap.poll()); } } } ``` 通过以上代码,我们可以在100亿数据中找到最大的一百个数,并按从大到小的顺序输出。 ### 回答3: 要解决这个问题,可以使用Java中的最大堆数据结构来实现。下面是一段示例代码,用于找出给定100亿个数字中的最大一百个数字: ```java import java.util.PriorityQueue; public class FindLargestNumbers { public static void main(String[] args) { // 模拟100亿个数字的输入,在这里假设为一个100亿长度的数组,命名为inputArray long[] inputArray = new long[(int)1e10]; // 创建一个最大堆,用于保存当前最大的一百个数字 PriorityQueue<Long> maxHeap = new PriorityQueue<>(100, (a, b) -> b.compareTo(a)); // 遍历输入数组,将数字插入到最大堆中 for (int i = 0; i < inputArray.length; i++) { maxHeap.add(inputArray[i]); // 一旦堆的大小超过100,删除堆顶元素 if (maxHeap.size() > 100) { maxHeap.poll(); } } // 最后,堆中保存的就是最大的一百个数字 System.out.println("最大的一百个数字为:"); while (!maxHeap.isEmpty()) { System.out.println(maxHeap.poll()); } } } ``` 以上代码使用了一个最大堆来保存当前最大的一百个数字,并在遍历输入数组时动态维护这个堆。由于最大堆的大小限制为100,因此堆中的数字始终保持最大的一百个。遍历结束后,最大堆中保存的就是最大的一百个数字。最后,通过循环打印最大堆中的元素,即可得到最大的一百个数字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值