Calculate prime gaps
Python, 121 110 109 108 104 103 characters
p,n,m=[2],3,0
while 1:
if all(n%x for x in p):
c=n-p[0]
if m<c:m=c;print(p[0],n,c)
p=[n]+p
n+=1
First time I tried to answer here, I hope I did it right... not sure I even counted the characters right.
Hmmm, I could save another character on the print by downgrading to Python 2.x...
JavaScript, 90 85 78 74 chars
Short Code (Google Closure Compiler - Advanced Optimizations; some manual edits; more edits by @MT0)
for(a=b=2,c=0;b++;)for(d=b;b%--d;)d<3&&(c<b-a&&console.log(a,b,c=b-a),a=b)
Long Code
var lastPrime = 2,
curNumber = lastPrime,
maxDistance = 0,
i;
// check all numbers
while( curNumber++ ) {
// check for primes
i = curNumber;
while( curNumber % --i != 0 ) {}
// if prime, then i should be equal to one here
if( i == 1 ) {
// calc distance
i=curNumber-lastPrime;
// new hit
if( maxDistance < i ) {
maxDistance = i;
console.log( lastPrime, curNumber, maxDistance );
}
// remember prime
lastPrime = curNumber;
}
}
Output
2 3 1
3 5 2
7 11 4
23 29 6
89 97 8
113 127 14
523 541 18
887 907 20
1129 1151 22
1327 1361 34
9551 9587 36
15683 15727 44
19609 19661 52
31397 31469 72
...
Pretty inefficient test for primes, but that way it uses less characters.
First post here, so please excuse any mistakes.
Mathematica, 114 108
Allows infinite output, although after a certain point in the sequence the fan spins up and you begin to suspect that your CPU is playing Freecell while doing its best to look busy.
p@x_:=NestWhile[#+1&,x+1,Divisors@#≠{1,#}&];m=0;q=1;While[1<2,If[p@q-q>m,Print@{q,p@q,p@q-q};m=p@q-q];q=p@q]
Output sample (These are the ones it picks up in the first ~30s):
{1,2,1}
{3,5,2}
{7,11,4}
{23,29,6}
{89,97,8}
{113,127,14}
{523,541,18}
{887,907,20}
{1129,1151,22}
{1327,1361,34}
{9551,9587,36}
{15683,15727,44}
{19609,19661,52}
{31397,31469,72}
{155921,156007,86}
{360653,360749,96}
{370261,370373,112}
{492113,492227,114}
{1349533,1349651,118}
{1357201,1357333,132}
{2010733,2010881,148}
Ungolfed code:
p@x_ := NestWhile[
# + 1 &,
x + 1,
Divisors@# ≠ {1, #} &];
m = 0;
q = 1;
While[
1 < 2,
If[
p@q - q > m,
Print@{q, p@q, p@q - q}; m = p@q - q];
q = p@q]