/* gnubc program: 3x+3k */ " THE 3x+3^k CONJECTURE: If collatzk(y,k) is typed in, (y non-zero), the iterates y, t(y), t(t(y)),... of the 3x+3^k function t(x) are printed and the number of steps taken to reach one of 3^k(1, -1, -5, -17) is recorded. (It is conjectured that every trajectory starting from a non-zero integer will end in one of these numbers.) " /* the least non-negative remainder when an integer a is divided by a positive integer b */ /* a%b=m(a,b) if a>=0 or a<0 and b divides a */ /* a%b=m(a,b)-b if a<0, b>0, a not divisible by b */ define mod(a,b){ auto c c=a%b if(a>=0) return(c) if(c==0) return(0) return(c+b) } /* the 3x+3^k function */ define collatztk(x,k){ auto t t=3^k if(mod(x,2)==0) return(x/2) return((3*x+t)/2) } define p(n){ auto s s=0 while(y%3==0){ s=s+1 y=y/3 } } define collatzk(y,k){ auto i,x,t,s t=3^k s=p(y) x=y for(i=0;i>=0;i++){ if(x%3==0 && x%2 && x%t!=0 && s