线性素数筛(java)

main方法求的是[a,b]范围内素数和

package tdm;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.Date;
import java.util.Calendar;

public class Main{
    public static int[] getPrime() {
        int cnt = 0;
        int[] minv = new int[10005];
        int[] prime = new int[10005];
        minv[1] = 1;
        for(int i = 2;i < 10000;i++)
        {
            if(minv[i] == 0)prime[++cnt] = i;
            for(int j = 1;j <= cnt && i * prime[j] < 10000;j++)
            {
                minv[i * prime[j]] = prime[j];
                if(i % prime[j] == 0)break;
            }
        }
        return minv;
    }
    public static void main(String[] args) {
        int P[] = getPrime();
        int a,b;
        Scanner cin = new Scanner(System.in);
        a = cin.nextInt();b = cin.nextInt();
        int ans = 0;
        for(int i = a;i <= b;i++)
        {
            if(P[i] == 0)
            {
                ans += i;
            }
        }
        System.out.println(ans);
    }
}

你可能感兴趣的:(java)