Sieve : 算法 « 集合数据结构 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 集合数据结构 » 算法屏幕截图 
Sieve
Sieve

/*
 * Copyright (c) 2000 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 2nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book (recommended),
 * visit http://www.davidflanagan.com/javaexamples2.
 */

/**
 * This program computes prime numbers using the Sieve of Eratosthenes
 * algorithm: rule out multiples of all lower prime numbers, and anything
 * remaining is a prime. It prints out the largest prime number less than or
 * equal to the supplied command-line argument.
 */
public class Sieve {
  public static void main(String[] args) {
    // We will compute all primes less than the value specified on the
    // command line, or, if no argument, all primes less than 100.
    int max = 100// Assign a default value
    try {
      max = Integer.parseInt(args[0]);
    // Parse user-supplied arg
    catch (Exception e) {
    // Silently ignore exceptions.

    // Create an array that specifies whether each number is prime or not.
    boolean[] isprime = new boolean[max + 1];

    // Assume that all numbers are primes, until proven otherwise.
    for (int i = 0; i <= max; i++)
      isprime[itrue;

    // However, we know that 0 and 1 are not primes. Make a note of it.
    isprime[0= isprime[1false;

    // To compute all primes less than max, we need to rule out
    // multiples of all integers less than the square root of max.
    int n = (intMath.ceil(Math.sqrt(max))// See java.lang.Math class

    // Now, for each integer i from 0 to n:
    //   If i is a prime, then none of its multiples are primes,
    //   so indicate this in the array. If i is not a prime, then
    //   its multiples have already been ruled out by one of the
    //   prime factors of i, so we can skip this case.
    for (int i = 0; i <= n; i++) {
      if (isprime[i]) // If i is a prime,
        for (int j = * i; j <= max; j = j + i)
          // loop through multiples
          isprime[jfalse// they are not prime.
    }

    // Now go look for the largest prime:
    int largest;
    for (largest = max; !isprime[largest]; largest--)
      // empty loop body

    // Output the result
    System.out.println("The largest prime less than or equal to " + max
        " is " + largest);
  }
}
           
       
Related examples in the same category
1. 字谜字谜
2. 河内塔之谜河内塔之谜
3. 斐波那契斐波那契
4. 找到连接使用深度优先搜索找到连接使用深度优先搜索
5. Find connections using hill climbing.
6. 寻找最佳的解决方案使用成本最低
7. 寻找键值寻找键值
8. Compute the area of a triangle using Heron's FormulaCompute the area of a triangle using Heron's Formula
9. 计算素数
10. 打印表格华氏和摄氏温度1
11. 打印表格华氏和摄氏温度2
12. 打印表格华氏和摄氏温度3打印表格华氏和摄氏温度3
13. Soundex算法Soundex算法
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.