Charles.Forsyth20060303a828770d19 years agoHistory
64 lines · 899 B · Brainfuck
RawDownload
implement Primes; include "draw.m"; Primes: module{	init: fn(nil: ref Draw->Context, argl: list of string);}; include "sys.m";	sys: Sys;include "arg.m";	arg: Arg; LIM: con 1729;MAX: con 1000000;BUFSZ: con 256; init(nil: ref Draw->Context, argl: list of string){	sys = load Sys Sys->PATH;	arg = load Arg Arg->PATH;	arg->init(argl);	quiet := 0;	lim := LIM;	while((ch := arg->opt()) != 0){		case (ch){			'q' =>				quiet = 1;			* =>				;		}	}	argv := arg->argv();	if(argv != nil)		lim = int hd argv;	if(lim < 2)		lim = 2;	if(lim > MAX)		lim = MAX;	c := chan[BUFSZ] of int;	spawn prime(c, !quiet);	for(n := 2; n <= lim; n++)		c <-= n;	c <-= 1;} prime(c: chan of int, pr: int){	p := <-c;	if(p == 1)		exit;	if(pr)		sys->print("%d\n", p);	nc := chan[BUFSZ] of int;	spawn prime(nc, pr);	for(;;){		n := <-c;		if(n%p)			nc <-= n;		if(n == 1)			exit;	}}