/*--------- File: sieve.h -------------------*/ void makesieve(int p[], int len); void printsieve(const int p[], int len); void printprimes(const int p[], int len); /*--------- File: sieve.c -------------------*/ #include <stdio.h> #include "sieve.h" static void initializesieve(int p[], int len) { int i; p[0] = 0; p[1] = 0; for (i = 2; i < len; i++) p[i] = 1; } static void one(int p[], int len, int prime) { int i; for (i = 2*prime; i < len; i = i + prime) p[i] = 0; }
void makesieve(int p[], int len) { int i; initializesieve(p, len); for (i = 2; i*i < len; i++) if (p[i] == 1) one(p, len, i); }
void printsieve(const int p[], int len) { int i; printf("Sieve follows:"); for (i = 0; i < len; i++) { if (i%100 == 0) printf("
"); printf("%d", p[i]); } printf("
"); } void printprimes(const int p[], int len) { int i; int count = 0; printf("Primes follow:"); for (i = 0; i < len; i++) { if (p[i] == 1) { if (count%10 == 0) printf("
"); printf("%d ",i); count++; } } printf("
"); }
/*--------- File: sievemain.c ---------------*/ #include <stdio.h> #include "sieve.h" #define SIZE 2000 int main() { int list[SIZE]; int listsize = SIZE; makesieve(list, listsize); printsieve(list, listsize); printprimes(list, listsize); return 0; }
|
/*--------- File: Sieve.java ----------------*/ public class Sieve { private static void initializeSieve(int[] p, int len) { p[0] = 0; p[1] = 0;
for (int i = 2; i < len; i++) p[i] = 1; }
private static void one(int[] p, int len, int prime) {
for (int i = 2*prime; i < len; i = i + prime) p[i] = 0; }
public static void makeSieve(int[] p, int len) {
initializeSieve(p, len); for (int i = 2; i*i < len; i++) if (p[i] == 1) one(p, len, i); }
public static void printSieve(int[] p, int len) {
System.out.print("Sieve follows:"); for (int i = 0; i < len; i++) { if (i%100 == 0) System.out.println(); System.out.print(p[i]); } System.out.println(); } public static void printPrimes(int[] p, int len) { int count = 0;
System.out.print("Primes follow:"); for (int i = 0; i < len; i++) { if (p[i] == 1) { if (count%10 == 0) System.out.println(); System.out.print(i + " "); count++; } } System.out.println(); } } /*--------- File: SieveMain.java ------------*/ public class SieveMain { final static int SIZE = 2000; static int[] list = new int[SIZE]; public static void main(String[] args) { int listSize = SIZE;
Sieve.makeSieve(list, listSize); Sieve.printSieve(list, listSize); Sieve.printPrimes(list, listSize); } }
|