看java核心,有一求质数的程序:
public class Sieve {
public static void main(String[] s) {
int n = 2000000;
long start = System.currentTimeMillis();
BitSet b = new BitSet(n + 1);//用于记录是否为质数
int count = 0;
int i;
for (i = 2; i <= n; i++){
b.set(i); //初始化
}
//忽略 1
i = 2;
while (i * i <= n) {
if (b.get(i)) {
count++;
//清除所有i的倍数
int k = 2 * i;
while (k <= n) {
b.clear(k);
k += i;
}
}
i++;
}
//处理剩余没处理的
while (i <= n) {
if (b.get(i))
count++;
i++;
}
long end = System.currentTimeMillis();
System.out.println(count + " primes");
System.out.println((end - start) + " milliseconds");
}
}
C语言版:
using namespace std;
int main() {
const int N = 2000000;
clock_t cstart = clock();
bitset<N + 1> b;
int count = 0;
int i;
for (i = 2; i <= N; i++)
b.set(i);
i = 2;
while (i * i <= N){
if (b.test(i)){
count++;
int k = 2 * i;
while (k <= N) {
b.reset(k);
k += i;
}
}
i++;
}
while (i <= N) {
if (b.test(i))
count++;
i++;
}
clock_t cend = clock();
double millis = 1000.0 * (cend - cstart) / CLOCKS_PER_SEC;
cout << count << " primes\n"
<< millis << " milliseconds\n";
return 0;
}
分享到:
相关推荐
本示例中采用的是一个较为简单的求素数方法:遍历所有小于等于某个上限(在这里是`MAX_PRIMES`)的整数,并检查每个数是否为素数。如果一个数不能被之前找到的任何素数整除,则认为它是素数。这种方法虽然简单直观,...
最快求素数的算法,求100000000以下所有素数0.3秒 , 在10000000以下的数中找到664579个素数,耗时53毫秒
在本主题中,我们将深入探讨如何利用C++语言,通过开方根的方法来高效地求解素数。这种方法对初学者尤其友好,因为它既直观又易于理解。 首先,我们需要了解为什么开方根法能提高求素数的效率。传统的检查素数的...
求1到100的素数,不过这个算法可能不是很好,另外,还要有,5个换行输出
本文为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下 题目要求是求所有小于n的质数的个数。 求质数方法1: 穷举法: 根据定义循环判断该数除以比他小的每个自然数(大于1),如果有能被...
此外,还有一种更优化的求素数方法,叫做米勒-拉宾素性测试(Miller-Rabin Primality Test),它是一种概率测试,可以快速地判断一个大数是否为素数,但可能存在一定的误差率。不过,对于大多数实际应用来说,...
7. 数学概念——素数的定义和判断方法。 通过这个项目,初学者不仅可以学习到C语言的基础知识,还能了解到算法设计与实现的基本思路。实践中,可以尝试优化算法,比如使用更高效的“埃拉托斯特尼筛法”来找出一定...
埃拉托斯特尼筛法是一种经典的求素数的方法,通过逐步筛选掉非素数来得到所有小于给定数的素数。在MATLAB中,可以创建一个全为1的布尔数组,然后从2开始,每次找到一个未被筛掉的数(即当前的素数),就将其倍数...
在C++中,求解素数的方法多种多样,本篇将重点介绍两种常见方法:使用STL容器中的`bitset`以及低级位筛法。 一、STL `bitset`求素数 `bitset`是C++标准库中的一个模板类,它提供了一种高效存储和操作位的方式。在...
质数,也称为素数,是大于1且只能被1和它本身整除的自然数。在数学领域,质数的研究具有重要的理论价值,而生成质数表则是探索质数性质的基础工作。在这个主题中,我们将探讨两种常用的方法来生成30000以内的质数表...
### 动态规划求素数 #### 背景与目的 在计算机科学与数学领域,素数(或称质数)是指仅能被1和自身整除的大于1的自然数。对于某些应用场景,例如密码学中的RSA算法,需要快速高效地生成或识别大范围内的素数。传统...
【Java】求1-100范围内的素数递归方法代码例子。分享,感谢。
总之,“求素数_求素数_源码.zip”中的代码可能展示了多种求解素数的方法,从基础的暴力检测到高效的筛法。学习和理解这些源码可以帮助我们更好地掌握数论和算法设计,对于提升编程技能非常有帮助。
素数(Prime Number),又称质数,是只能被1和自身整除的大于1的自然数。例如,2、3、5、7等。 #### 判断方法 在代码中,`isPrimer` 函数用于判断一个给定的整数 `n` 是否为素数。具体步骤如下: - 遍历从1到`n/2`...
在编程领域,素数是指大于1且只有两个正因数(1和自身)的...对于这个新的求素数方法,尽管描述简略,但我们可以推测它可能是一种优化的算法,旨在提高效率或降低内存消耗。要了解更多详情,我们需要进一步研究源代码。
- **埃拉托斯特尼筛法**:这是一种经典的求素数的方法,通过创建一个整数序列,然后从2开始,依次将每个数的倍数划去,剩下的就是素数。但在VB中,我们可以简化为逐个检查每个数是否为素数。 - **判断素数的条件**...
这是一个用java编写的控制台程序,可以求一个数是不是质数,并且把这个数按递减顺序求,一直求到1,一次性的显示判断
方法: 利用js中求模, 看是否有余数. —> 3%2 = 1; 5%2 = 3……… 代码如下: function test (n) { // 判断一个数是否能被自身小的正整数(除开1和自身)整除.如果能整除则不是质数,否则反之. for(var k = 2;k < n...
本文将深入探讨两种在Java中求素数的方法,并结合提供的`Test1.java`和`Test2.java`文件,来理解这两种方法的实现细节。 首先,我们要明确什么是素数。素数是指大于1且只有1和它本身两个正因数的自然数,例如2、3、...
求素数问题。埃拉托色尼筛法(Sieve of Eratosthenes)是一种用来求所有小于N的素数的方法。从建立一个整数2~N的表着手,寻找i˂的整数,编程实现此算法,并讨论运算时间。