java经典算法——筛选法查找100以内的

2人阅读 评论(0) 收藏 举报
分类:

     筛选法是指从小到大筛去一个已知素数的所有倍数。例如:根据2,我们筛选去4,6,8,....,98,100等数,然后根据3,我们可以筛选9,15,...99等数(注意此时6、12等数早就被筛去了),由于4被筛去了,下一个用于筛选的素数是5,以此类推,最后剩余的就是100以内的素数。

    首先定义一个int类型的数组int[] a,初始化整个数组,全部初始化为1,第二步双重循环,从2开始,所有2的倍数都标记为0,所有3的倍数也标记为0;然后 是 4,但因为4已经被标记为0了,跳过;接着是5,直到所有的数都循环过一遍。

代码如下:

package com.imooc.test2;

/**
 * 利用筛选法查找100以内的素数
 */
public class Test {
    public static void main(String[] args) {
        // 定义一个int类型的数组
        int[] a = new int[101];
        int i,j;

        // 初始化整个数组,全部初始化为1
        for (i = 0; i <101 ; i++) {
            a[i] = 1;
        }

        for (i=2;i<101;i++){
            if(a[i]!=0){
                for (j=i+i;j<101;){
                    // 如果能被整除,说明是一个数的倍数,赋值为0
                    if(j%i==0){
                        a[j]=0;
                        j = j+i;
                    }
                }
            }
        }

        // 遍历筛选后的数组,输出100以内的素数
       for ( i = 2; i < 101; i++) {
            if (a[i]==1){
                System.out.println(i);
            }
        }

    }
}
查看评论

筛选法输出100以内的所有素数

#include #include int main(void) { int i; int j; int a[101]; // 为直观表示,各元素与下标对应,...
  • liming0931
  • liming0931
  • 2012年07月07日 16:31
  • 3317

用筛选法求出100以内的素数

#include #include #define N 100 void PrintPrime(int a[], int n) { int i; for (i = 2; i
  • qq_22512533
  • qq_22512533
  • 2015年05月03日 16:53
  • 1221

求出100以内的所有素数--筛选法和根号法

/** * 筛选法求出100以内的所有素数,即从小到大筛去一个已知素数的所有倍数 * * 素数:只能被1和本身整除 * * 根号法:素数不能被2~sqrt(n)整除 */ packag...
  • yutiannanjingjiangsu
  • yutiannanjingjiangsu
  • 2013年08月15日 19:44
  • 1697

java 找出100以内的素数

 public class FindPrime { /** * @param args */ public static void main(String[] args) { // TODO A...
  • jjx307998840
  • jjx307998840
  • 2009年11月12日 10:32
  • 916

筛选法求1到100以内的素数

问题描述: 所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个...
  • see__you__again
  • see__you__again
  • 2016年01月18日 21:20
  • 1403

找素数的Eratosthenes算法(筛选法)

关于Eratosthenes算法的介绍点击 Eratosthenes 筛选求质数。下面是其代码实现 package day03; public class TestJava { public s...
  • u012796139
  • u012796139
  • 2016年01月20日 22:11
  • 1253

筛选法查找100以内的素数

public class Test1 { static int num=0; public static void main(String args[]){ int i...
  • Lazy_Die
  • Lazy_Die
  • 2017年08月08日 20:07
  • 115

用筛法求100之内的素数。

//知识点: //筛法的定义:筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留 //下来,而把2后面所有能被2整除的数都划去。2后面第一个没...
  • on_the_road_c
  • on_the_road_c
  • 2017年12月06日 22:32
  • 173

100以内素数判定(筛选法)

#include//100以内的素数只需要判定是不是2到10的倍数即可而在2到10中只有2.3.5.7这四个素数 int prime(int num) {     if(num==2 || nu...
  • qq_41021816
  • qq_41021816
  • 2017年12月17日 13:23
  • 45

用筛选法求100以内的素数(数组)

用筛选法求100以内的素数,要求使用数组。 #include "stdafx.h" #include using namespace std; int _tmain(int a...
  • yanglize
  • yanglize
  • 2015年08月21日 10:58
  • 2710
    个人资料
    等级:
    访问量: 402
    积分: 47
    排名: 179万+
    文章分类
    文章存档