home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / plisampl.zip / SIEVE < prev    next >
Text File  |  1989-04-25  |  1KB  |  50 lines

  1. upper_bound=1000;
  2. limit=upper_bound;
  3. finished=FALSE;
  4. DO WHILE(! finished);
  5.   x2=(upper_bound/limit+limit)/2;
  6.   IF x2 < limit THEN
  7.     limit=x2;
  8.   ELSE
  9.     finished=TRUE;
  10. END;
  11. possible_prime=1;
  12. DO WHILE(possible_prime <= upper_bound);
  13.   prime(possible_prime)=TRUE;
  14.   possible_prime=possible_prime+1;
  15. END;
  16. possible_prime=2;
  17. product=1.0;
  18. num_primes=0;
  19. DO WHILE(possible_prime <= limit);
  20.   DO WHILE(! prime(possible_prime));
  21.     possible_prime=possible_prime+1;
  22.   END;
  23.   num_primes=num_primes+1;
  24.   PRINT(SYSPRINT,num_primes,CHAR(9),possible_prime);
  25.   PUTCRLF(SYSPRINT);
  26.   prime_number=FLOAT(possible_prime);
  27.   product=product*(1.0/(1.0-1.0/(prime_number*prime_number)));
  28.   non_prime=possible_prime*possible_prime;
  29.   DO WHILE(non_prime <= upper_bound);
  30.     prime(non_prime)=FALSE;
  31.     non_prime=non_prime+possible_prime;
  32.   END;
  33.   possible_prime=possible_prime+1;
  34. END;
  35. DO WHILE(possible_prime <= upper_bound);
  36.   IF prime(possible_prime) THEN
  37.     DO;
  38.       num_primes=num_primes+1;
  39.       PRINT(SYSPRINT,num_primes,CHAR(9),possible_prime);
  40.       PUTCRLF(SYSPRINT);
  41.       prime_number=FLOAT(possible_prime);
  42.       product=product*(1.0/(1.0-1.0/(prime_number*prime_number)));
  43.     END;
  44.   possible_prime=possible_prime+1;
  45. END;
  46. pi=SQRT(6.0*product);
  47. PUTCRLF(SYSPRINT);
  48. PRINT(SYSPRINT,'Approximation to pi = ',pi);
  49. PUTCRLF(SYSPRINT);
  50.