`
lylegend13
  • 浏览: 82814 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

小于N的所有质数(倍数排除法)

 
阅读更多
// A2.java

public class A2 {

	public static void main(String[] args) {
		exec(1000);
	}

	public static void exec(int N) {
		int a[] = new int[N + 1];
		int s;
		for (int i = 2; i <= N; i++) {
			// 标记过的不再操作
			if (a[i] == 1) {
				continue;
			}
			// 对未标记的数的所有倍数标记
			s = i;
			while ((s += i) <= N) {
				a[s] = 1;
			}
		}
		// 显示结果
		for (int i = 2; i <= N; i++) {
			if (a[i] == 0) {
				System.out.println(i);
			}
		}
	}
}

 

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
211
223
227
229
233
239
241
251
257
263
269
271
277
281
283
293
307
311
313
317
331
337
347
349
353
359
367
373
379
383
389
397
401
409
419
421
431
433
439
443
449
457
461
463
467
479
487
491
499
503
509
521
523
541
547
557
563
569
571
577
587
593
599
601
607
613
617
619
631
641
643
647
653
659
661
673
677
683
691
701
709
719
727
733
739
743
751
757
761
769
773
787
797
809
811
821
823
827
829
839
853
857
859
863
877
881
883
887
907
911
919
929
937
941
947
953
967
971
977
983
991
997

0
0
分享到:
评论
1 楼 jasongreen 2009-11-20  
简单有效,基本够用

相关推荐

    Java实现求小于n的质数的3种方法

    埃拉托斯特尼筛法是一种有效的找出所有小于n的质数的方法,它通过依次排除每个质数的倍数,从而找出所有的质数。 总结来说,这三种方法分别代表了从基础到优化的求质数策略。初级方法直接应用质数定义,适合理解...

    python使用筛选法计算小于给定数字的所有素数

    筛选法,又称埃拉托斯特尼筛法(Sieve of Eratosthenes),是一种有效找到所有小于给定数的素数的算法。这种方法通过逐步排除合数(非素数)来找到素数。以下将详细介绍该方法及其在Python中的实现。 筛选法的基本...

    计数质数(筛选法)1

    在编程领域,特别是算法设计中,计数质数是一个经典的数论问题。...筛选法的核心在于利用数组记录每个数的质数状态,然后从2开始依次排除质数的所有倍数。这种方法的时间复杂度比暴力法低,能有效处理大规模数据。

    JS实现计算小于非负数n的素数的数量算法示例

    本文主要介绍如何利用JavaScript实现一个算法,以计算小于给定非负数n的所有素数的数量。素数是指只能被1和它本身整除的自然数,并且大于1的数。在编程中,素数的计算是一个常见的问题,很多算法和编程语言都提供了...

    素数判断的几种方法代码实现及其复杂度分析

    当所有小于等于n的数都被处理完毕后,剩下未被标记的数即为小于等于n的所有素数。该方法的时间复杂度在不同的实现中有所差异,但理想情况下接近线性时间复杂度O(n log log n),而实际操作中的复杂度要高于理论上的...

    用来筛选自然数中的质数程序

    质数,又称素数,是大于1且只有1和它本身两个正因数的自然数。在数学领域,质数的研究具有重要的理论价值,而在密码学、计算机科学等领域也有广泛应用。例如,RSA公钥加密算法就是基于大质数的性质构建的。 筛选...

    素数代码,用来检验素数

    这种方法的基本思路是:如果一个数n大于1,并且对所有小于n的整数i(除了1和n本身),n都不能被i整除,那么n就是素数。 下面是一个简单的Python实现示例: ```python def is_prime(n): if n return False elif...

    素数判定的几种算法范文

    这是一种基于排除法的简单算法,从2开始,将所有2的倍数标记为非素数,然后选择下一个未标记的数(3),将其所有倍数标记,依次类推。然而,这种方法在编程中并不常用,因为对于大数处理效率较低,主要适用于小规模...

    质数的判断条件.zip

    4. **筛法**:埃拉托斯特尼筛法是一种有效的寻找所有小于特定数的质数的方法。从2开始,将2的倍数全部划去,然后选择下一个未被划去的数3,将3的倍数划去,如此反复,留下的未被划去的数就是质数。 5. **轮换法**:...

    C++中素数的判定方法(多版)

    优化法通过排除2和3以及所有6的倍数,减少了更多不必要的检查。 3. **基于流的筛法**: 这种方法通常用于一次性生成一定范围内的所有素数,如埃拉托斯特尼筛法。基本思想是从2开始,依次将2的倍数标记为非素数,...

    19301020057_06_2_质数_

    这个函数首先排除了小于等于1的数,然后快速检查2和3,接着用一个循环来检查所有形如6k±1的数,直到`i`的平方大于`n`为止。这种方法比简单的逐个检查更高效,因为大部分偶数和3的倍数都不是质数。 在学习质数相关...

    六年级奥数.-数论.质数、合数、约数、倍数-(ABC级).学生版.doc

    * 根据定义,如果能够找到一个小于 p 的质数 q(均为整数),使得 q 能够整除 p,那么 p 就不是质数。 * Therefore, we can use all prime numbers less than p to divide p, and if p is not divisible by any of ...

    Python求n以内最大的k个素数c.docx

    然后是3,标记所有3的倍数,以此类推,直到标记完所有小于等于 `sqrt(n)` 的素数的倍数为止。这种方法能够显著减少不必要的计算。 ```python def sieve_of_eratosthenes(n): primes = [True] * (n+1) p = 2 ...

    sushuo.rar_素数

    描述中提到的“筛法筛素数”指的是著名的埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种用于寻找所有小于给定整数n的所有素数的算法。其基本步骤如下: 1. 创建一个从2到n的数列。 2. 从2开始,将2的倍数...

    判断是否是质数_C语言_质数的判断方法_

    虽然这不是直接用于单个质数判断的算法,但了解它是很有帮助的,因为它是批量查找所有小于给定数的质数的高效方法。不过,埃拉托斯特尼筛法并不适合这个问题,因为它过于复杂,不适合单独判断一个数。 4. **其他...

    prime筛选法三种

    这是因为`n`的平方已经是`n`的最小非素数倍数,无需再从小于`n`的倍数开始标记。 在第二段代码中,可以看到优化后的筛选过程,使用`nList`数组来标记非素数,数组长度同样为`MAX_P+1`,但是仅处理奇数素数,从而...

    Python求n以内最大的k个素数.pdf

    然后找到下一个未被标记的数,重复上述过程,直至所有小于或等于n的数都被处理。 使用埃拉托斯特尼筛法的具体实现如下: ```python def sieve_of_eratosthenes(limit): sieve = [True] * (limit + 1) sieve[0] =...

    MATLAB寻找素数的源程序代码.zip

    除此之外,还有一种优化的算法叫做“埃拉托斯特尼筛法”(Sieve of Eratosthenes),它用于生成一定范围内的所有素数。该方法通过逐步排除合数(非素数)来找到素数。以下是一个基本的实现: ```matlab function ...

    the_sum_of_prime.zip_The Prime

    超过这个点的倍数已经被之前的小于它的素数排除了。 4. 统计数组中值为真的索引数量,这将给出小于等于n的素数个数。 在这个问题中,可能的实现方式包括但不限于直接应用埃拉托斯特尼筛法,或者使用更优化的算法,...

Global site tag (gtag.js) - Google Analytics