2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1 ... 77, 78, 79, 80, 81, 82, 83, 84  След.
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение05.04.2025, 19:19 
Заслуженный участник


20/08/14
12120
Россия, Москва
Хм, если так, то да, получается (хотя мнимая часть всё равно не совпадает, но она потом сокращается):
Код:
? -eint1(-log(20^(1/2+I*14.1347251417346937904572519835625)))
%1 = 1.9979692368474822688136820603245564820 + 0.77224977227477630516373401329504663721*I
? -eint1(-log(20)*(1/2+I*14.1347251417346937904572519835625))
%2 = -0.10538404386093955583446841960202226278 - 0.0058948235763427200091373207773225459570*I
? -log(20)*(1/2+I*14.1347251417346937904572519835625)
%3 = -1.4978661367769954967176117880712703878 - 42.343852284909631815048923573555448673*I
? -log(20^(1/2+I*14.1347251417346937904572519835625))
%4 = -1.4978661367769954967176117880712703878 + 1.6384448653474735234280837923575917053*I
Только почему $\ln(x^a) \ne a\ln(x)$ непонятно, неужели для комплексных чисел оно неточное?! :shock:

Ну тогда можно и добавить вычисление второго члена, но его точность будет никакая, 4-5 значащих цифр (не хранить или скачивать миллиарды нулей же), а надо 10-12 (чтобы перекрыть превышение $li(x)-\pi(x)$).

-- 05.04.2025, 19:36 --

Сделал подсчёт второго члена, точность даже для n=1e6 никакая, первый миллион нулей дзета-функции даёт погрешность уже в 4-м знаке, -29.75047 вместо -29.74435 в книге:
код: [ скачать ] [ спрятать ]
Используется синтаксис Text
  1:                          78627.54916             -29.75047         -0.69315          0.00000  =                         78597.10555
  2:                            -88.80483               0.11049          0.34657         -0.00000  =                           -88.34776
  3:                            -10.04205               0.29990          0.23105         -0.00000  =                            -9.51110
  5:                             -1.69303               0.08786          0.13863         -0.00012  =                            -1.46667
  6:                              1.02760              -0.02349         -0.11552          0.00031  =                             0.88889
  7:                             -0.69393              -0.04737          0.09902         -0.00058  =                            -0.64286
 10:                              0.29539              -0.02791         -0.06931          0.00183  =                             0.20000
 11:                             -0.23615              -0.00634          0.06301         -0.00234  =                            -0.18182
 13:                             -0.15890               0.03206          0.05332         -0.00340  =                            -0.07692
 14:                              0.13281              -0.01581         -0.04951          0.00394  =                             0.07143
 15:                              0.11202              -0.00362         -0.04621          0.00448  =                             0.06667
 17:                             -0.08133              -0.01272          0.04077         -0.00554  =                            -0.05882
 19:                             -0.06013              -0.02241          0.03648         -0.00657  =                            -0.05263
78497.993950511489968878366452848199913
78498\\Точное значение

Реально считать по нулям дзета-функции нужно лишь один раз, в первой строке, в остальных можно вычислять сразу $j(x)$ (справа, сумма колонок в каждой строке) через известные значения $\pi(t)$ в её разложении. До 1e8 хорошо работает primepi(), выше быстро считает primecount, а выше 1e38 (квадрат 1e19 из второй строки) нас числа и не интересуют.

Но вот с нулями дзета-функции в первой строке конкретная засада, в одной из приведённых Вами статей 100+млрд нулей хватило лишь для $\pi(10^{24})$ ... :-(

-- 05.04.2025, 19:46 --

Вычисление $\pi(10^{27})$ с тем же миллионом нулей дзета-функции, с оптимизацией $j(x<10^8)$ (оптимизированные строки не показаны):
Используется синтаксис Text
  1:     16352460426842189113085405.33867     19115776307.94704         -0.69315          0.00000  =    16352460426842208228861712.59256
  2:                  -526185192200.32344           11199.95129          0.34657         -0.00000  =                 -526185181000.02558
  3:                      -16949744.98567             -25.97647          0.23105         -0.00000  =                     -16949770.73108
16352460426842189113085405.338669698491\\li(n)
16352460426841682060634479.291631514126
16352460426841680446427399\\Точно


-- 05.04.2025, 19:53 --

Программа:
Код:
n=1e27;\\vecprod(primes([2,67]));
{s=0.0;
for(i=1,oo,
m=moebius(i)/i; if(m==0, next);
y=sqrtn(n,i); if(y<2, break);
if(y<1e8,\\Оптимизация вычисления j(y)
a=b=c=d=add=0; for(k=1,oo, yy=sqrtn(y,k); if(yy<2, break); add+=primepi(yy)/k-if(floor(yy)^k==y&&ispseudoprime(floor(yy)),1/2/k,0); ); ,
a=real(-eint1(-log(y)));
b=-sum(i=1,#zm, 2*real(-eint1(-log(y)*(1/2+I*zm[i]))));
c=-log(2); d=intnum(t=y,oo, 1/t/(t^2-1)/log(t));
add=a+b+c+d;);
s+=m*add;
printf("%3u:  %35.5f  %20.5f  %15.5f  %15.5f  = %35.5f\n",i,m*a,m*b,m*c,m*d,m*add););
print(real(-eint1(-log(n))),"\\\\li(n)");
print(s);
В массиве zm[] лежат мнимые части нулей дзета-функции.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение05.04.2025, 19:47 
Аватара пользователя


29/04/13
8967
Богородский
Dmitriy40 в сообщении #1681214 писал(а):
Ну тогда можно и добавить вычисление второго члена, но его точность будет никакая, 4-5 значащих цифр

О чём и речь. Риман вывел формулу, а про практическое применение не подумал. Нехороший человек :-)

Но вот в этих работах, при вычислении $\pi(10^{24})$ научились как-то спрямлять путь без критической потери точности. Но нулей требовалось много, да.

И никто не подскажет что ли, даже Droog_Andrey...

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение05.04.2025, 22:07 
Аватара пользователя


29/04/13
8967
Богородский
Если ничего не путаю, то согласно A007508 количество пар близнецов посчитано лишь до 1e18. Пока не вижу используются ли где для расчёта дзета-нули. Вряд ли расчёт сильно сложнее, может просто ни у кого руки не дошли. А может найдётся ещё такая работа... Посмотрите, кому не лень.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение05.04.2025, 23:06 
Заслуженный участник


20/08/14
12120
Россия, Москва
По одной из ссылок оттуда (и не только оттуда, вообще полезный сайт) есть таблица из 4000 значений $\pi_2(x)$ с шагом $10^{15}$, т.е. до 4e18. Но это апрель 2012. И более новых не встречал.
Похоже это (и куча других данных, например эти) считалось решетом, не формулами или паттернами.

-- 05.04.2025, 23:19 --

А вот здесь заметил интересную формулу:
$$\operatorname{Li}_2(x)=\operatorname{Li}(x)+\frac{2}{\ln 2}-\frac{x}{\ln x}$$
Она сразу под картинкой сравнения $\operatorname{Li}_2(x)$ vs $\pi_2(x)$.
Для грубой оценки не так уж и плохо, для $10^{18}$ даёт 6.1e14 вместо 8.1e14 ($x/\ln^2 x$ даёт 5.8e14).

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение06.04.2025, 05:54 
Аватара пользователя


29/04/13
8967
Богородский
Верю, что Вы внимательно искали. Какой предварительный вывод:

Никто не знает формулу для точного количества простых близнецов в интервале.

1. Количество простых чисел закодировано нулями дзета-функции Римана.

2. Количество кортежей из простых чисел закодировано ещё и наборами констант.

Эти наборы констант мы считать научились. И моя интуиция говорит, что формулы для точного количества кортежей должны существовать.

Но несмотря на то, что для простейшего кортежа, близнецов (как и для других кристаллов) константа всего одна и она прекрасно известна, формулу никто не вывел. Надо быть круче Бернхарда Римана чтобы её вывести или просто никто не заморачивался?

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение06.04.2025, 10:59 
Заслуженный участник


20/08/14
12120
Россия, Москва
Да я особо и не искал, просто по известным местам (вики, oeis, вольфрам) и ссылкам ничего не было (и нет).

Yadryara в сообщении #1681251 писал(а):
Надо быть круче Бернхарда Римана чтобы её вывести
Думаю да. Или не круче, но сравнимо. Смотрите, даже про бесконечность близнецов не доказано, хотя бесконечность простых легко доказывается в средней школе. Статья Чжана в 2013 про пары с расстоянием 70млн (фактически кортежей длиной два и диаметром 7e7) была прорывом, до неё про бесконечность кортежей вообще ничего не было доказано. Потом быстро уменьшили диаметр до 5млн и до 600 и до 246 - и заглохло. Даже с недоказанными гипотезами диаметр уменьшается до 12 или 6, но не до 2.
Впрочем и "никто не занимался" тоже верно: простые числа много куда встроены в математике (как минимум - делимость, разложение на множители, шифрование, тесты простоты, эллиптические кривые, а ещё больше опутано следствиями из ГР и других гипотез) и потому их много исследуют, а вот кортежи из них - нет, нигде не применяются. Даже арифметическими прогрессиями из простых чисел (те что не из последовательных простых) тоже не занимаются, видимо приложений тоже нет.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение06.04.2025, 18:10 
Заслуженный участник


20/08/14
12120
Россия, Москва
Можно указать интервалы где кортежей 19-252 точно нет: если для всех простых $p$ в этом интервале выполняется $\pi(p+252)-\pi(p) \ne 19$.
Разумеется можно проверять не все простые, а лишь допустимые (которых почти 3e17 в каждом интервале длиной 67#).
Для больших интервалов условие слишком мягкое.
Совершенно непрактично, зато формулой (если кванторы расставить).

С другой стороны, для больших чисел не так уж и много кортежей длиной 19 и диаметром 252 есть, вот например количество на первый миллиард после степеней десятки:
Код:
? for(k=10,24, x=10^k; w=vector(19); n=0; forprime(p=x,x+1e9+251, w=concat(w[2..-1],p); if(w[#w]-w[1]==252,n++); ); print("10^",k,": ",n); );
10^10: 63421
10^11: 21642
10^12: 7398
10^13: 2510
10^14: 960
10^15: 357
10^16: 143
10^17: 48
10^18: 26
10^19: 7
10^20: 3
10^21: 3
10^22: 1
10^23: 0
10^24: 0
А после известной 19-252 следующий такой кортеж (длины 19 и диаметром 252 с любым паттерном внутри) через 1171761564, следующие через 10840077744, 13321871420, 13321871424, 34276257170, 39053236082, 42268396172, 68182695594, 70114558430, 70807859060, 83218783712, 90483703764, 104870356404, 108982904330, 112229410890, 127397625972, 134555947134, 134580154674, 139131051780, 147504408480, 151539813714, 153869058242, 164312524970, 185177250654, 186293535822, 215943672470, 216012078420, 225088378422, 226411374980, 226583262764 от 19-252.
В среднем же, если плотность и дальше падает примерно втрое на каждый порядок, то около 1e26 должен быть один кортеж (длиной 19 и диаметром 252 с любым паттерном) на десяток миллиардов чисел. Т.е. в среднем до десятка миллиардов чисел можно не проверять если уметь очень быстро считать $\pi(x)$ (или лучше даже сразу $\pi(x+252)-\pi(x)$) для больших чисел $x$.
Замечу, это лучше чем по допустимым остаткам, которые для 67# дают почти 3e17 вариантов, т.е. в среднем 1 вариант на 27e6 чисел.
Зато можно скрестить то и другое и проверять условие $\pi(x+252)-\pi(x)=19$ лишь для 1 из 27e6 чисел $x$.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 08:59 
Аватара пользователя


29/04/13
8967
Богородский
Dmitriy40 в сообщении #1681237 писал(а):
А вот здесь заметил интересную формулу:
$$\operatorname{Li}_2(x)=\operatorname{Li}(x)+\frac{2}{\ln 2}-\frac{x}{\ln x}$$
Она сразу под картинкой сравнения $\operatorname{Li}_2(x)$ vs $\pi_2(x)$.
Для грубой оценки не так уж и плохо, для $10^{18}$ даёт 6.1e14 вместо 8.1e14 ($x/\ln^2 x$ даёт 5.8e14).

Забыли на константу умножить? Если умножить, то в Альфе будет 808675901493607.7

Для больших чисел и старый добрый способ с intnum начиная с 2-ки здорово работает:

Код:
v = [0, 2]   C = 1.3203236316937391478556242200291115569

sta = 2

10^1    4.836188
10^2    13.535488
10^3    45.795500
10^4    214.210940
10^5    1248.708736
10^6    8248.029690
10^7    58753.816498
10^8    440367.794227
10^9    3425308.155743
10^10    27411416.532279
10^11    224368864.681182
10^12    1870559866.818522
10^13    15834598305.062008
10^14    135780264894.490913
10^15    1177208491860.681296
10^16    10304192554495.766985
10^17    90948833260989.828876
10^18    808675901493606.298782
10^19    7237518062753712.333766

Сравним:

Код:
808675901493606.3
808675901493607.7

Почти совпали. Настоящее количество: 808675888577436.

(PARI)

Код:
{print();t0=getwalltime();
v = [0, 2];
print1("v = ",v);
BC=vector(#v+30,k,
prodeulerrat(( p^k - k*p^(k-1) )/(p-1)^k, 1, nextprime(k+1)) );
MC=vector(#v+30,k, x=1.0;
forprime(p=3,k,x/=p*(1-1.0/p)^k); forprime(p=k+1,v[#v]/2,x/=p-k);x );
CC=vector(#v+30,k, 2^(k-1) * MC[k] * BC[k]);
a=setminus(vector(v[#v]/2,i,i*2),v);
v0=vector(v[#v]/2,p,
if(p>2&&isprime(p),setminus(vector(p,i,i-1),Set(-v%p)),[]));
m0=vector(#v0,p, t=0;foreach(v0[p],x, t=bitor(t,2^x););t);
C=CC[#v]; forprime(p=3,#m0, C*=hammingweight(m0[p]); );
print("   C = ",C);print();
for(sta=2,2,
print("sta = ",sta);
print();
for(po=1,19,
fin=10^po;
all=intnum(t=sta, fin, 1/log(t)^#v * C );
printf("10^%u    %0.6f\n",po,all); ));
print();print(strtime(getwalltime()-t0));
print();
}quit;

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 11:44 
Заслуженный участник


20/08/14
12120
Россия, Москва
Меня в формуле заинтересовало не только само вычисление и его точность, а скорее "понижение степени" интегрального логарифма (степени логарифма под интегралом), вдруг это сработает и для паттернов большей длины. Правда смысл формулы (причина связи между $Li_2()$ и двумя разными приближениями к $\pi()$) до меня не доходит.

А intnum() и должен работать, он же и есть $Li_2()$ по определению.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 12:11 
Аватара пользователя


29/04/13
8967
Богородский
Я, кстати, разбираться не бросил. Тут ещё много всяких засад (подводных камней). Можно ведь ещё сильно по разному определить $\pi_2(n)$. Например:

(Оффтоп)

Код:
bliz[3]=1;
bliz[4]=1;
bliz[5]=2;
bliz[6]=2;
bliz[7]=2;
bliz[8]=2;
bliz[9]=2;
bliz[10]=2;
bliz[11]=3;
bliz[12]=3;
bliz[13]=3;
bliz[14]=3;
bliz[15]=3;
bliz[16]=3;
bliz[17]=4;
bliz[18]=4;
bliz[19]=4;
bliz[20]=4;
bliz[21]=4;
bliz[22]=4;
bliz[23]=4;
bliz[24]=4;
bliz[25]=4;
bliz[26]=4;
bliz[27]=4;
bliz[28]=4;
bliz[29]=5;
bliz[30]=5;

или

(Оффтоп)

Код:
bliz[3]=0;
bliz[4]=0;
bliz[5]=0;
bliz[6]=1;
bliz[7]=1;
bliz[8]=2;
bliz[9]=2;
bliz[10]=2;
bliz[11]=2;
bliz[12]=2;
bliz[13]=2;
bliz[14]=3;
bliz[15]=3;
bliz[16]=3;
bliz[17]=3;
bliz[18]=3;
bliz[19]=3;
bliz[20]=4;
bliz[21]=4;
bliz[22]=4;
bliz[23]=4;
bliz[24]=4;
bliz[25]=4;
bliz[26]=4;
bliz[27]=4;
bliz[28]=4;
bliz[29]=4;
bliz[30]=4;

Или целочисленные промежуточные. В каких-то случаях одно может быть удобнее другого.

Dmitriy40 в сообщении #1681481 писал(а):
а скорее "понижение степени" интегрального логарифма (степени логарифма под интегралом), вдруг это сработает и для паттернов большей длины.

Видимо, это просто правила действий со степенями (с логарифмами). Я их давно подзабыл. Сработает, видимо. Но что с нулями-то делать...

А вдруг вычитать: $\sum\limits_{i=1}^{\infty} Li(x^{\rho_i})-\sum\limits_{i=1}^{\infty} Li((x-2)^{\rho_i})$ ??

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 13:11 
Заслуженный участник


20/08/14
12120
Россия, Москва
Yadryara в сообщении #1681486 писал(а):
Можно ведь ещё сильно по разному определить $\pi_2(n)$.
Можно, но все они будут отличаться лишь на малую константу (максимум несколько единиц), что для чисел больше миллионов несущественно (пока).
И проще пользоваться стандартным определением: количество пар простых (x,x+2) для всех x<=n (A071538), а вот primesieve.exe 0 -d30 -c2 выдаёт меньшее значение, по условию x+2<=n.

Yadryara в сообщении #1681486 писал(а):
Видимо, это просто правила действий со степенями (с логарифмами). Я их давно подзабыл.
Скорее с интегралами, которые я и не знал.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 13:36 
Аватара пользователя


29/04/13
8967
Богородский
Dmitriy40 в сообщении #1681490 писал(а):
Можно, но все они будут отличаться лишь на малую константу (максимум несколько единиц), что для чисел больше миллионов несущественно (пока).

Я склоняюсь к обратному. Возиться надо и с маленькими числами. Ведь чтобы получить правильное значение $\pi(x)$ именно для самых маленьких чисел порой хватает даже 10 тысяч нулей.

Формула Римана работает отлично и даёт точные значения для всех $x$, кроме $x=p^m$, где $p$ — простое, $m$ — целое положительное. Чтобы получить настоящее $\pi(x)$ нужно в таких случаях добавлять $\frac1{2m}$.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 13:51 
Заслуженный участник


20/08/14
12120
Россия, Москва
Yadryara в сообщении #1681491 писал(а):
Формула Римана работает отлично и даёт точные значения для всех $x$, кроме $x=p^m$, где $p$ — простое, $m$ — целое положительное. Чтобы получить настоящее $\pi(x)$ нужно в таких случаях добавлять $\frac1{2m}$.
С чего это Вы взяли?! Ничего добавлять не надо, во всяком случае для вот этих n (с миллионом нулей дзета-функции):
код: [ скачать ] [ спрятать ]
Используется синтаксис Text
n=5^2=25:
  1:                             11.51296               0.01330         -0.69315          0.00022  =                            10.83333
  2:                             -1.81729              -0.02422          0.34657         -0.00506  =                            -1.50000
  3:                             -0.69787               0.14779          0.23105         -0.01431  =                            -0.33334
11.512956456316464468226506039531906848\\li(n)
8.9999876528233689323223786895284422272
9\\pi(n)

n=7^2=49:
  1:                             18.21241               0.34734         -0.69315          0.00005  =                            17.86665
  2:                             -2.37853               0.03413          0.34657         -0.00218  =                            -2.00000
  3:                             -0.90457               0.01451          0.23105         -0.00766  =                            -0.66667
  5:                             -0.25741              -0.06016          0.13863         -0.02106  =                            -0.20000
18.212414048949734091353122090524958983\\li(n)
14.999985556898470673204393370381486120
15\\pi(n)

n=3^5=243:
  1:                             58.15770               0.64503         -0.69315          0.00000  =                            58.10958
  2:                             -4.18529               0.17238          0.34657         -0.00032  =                            -3.66667
  3:                             -1.45162               0.05583          0.23105         -0.00193  =                            -1.16667
  5:                             -0.43272               0.00206          0.13863         -0.00798  =                            -0.30000
  6:                              0.27753              -0.00673         -0.11552          0.01140  =                             0.16667
  7:                             -0.18640              -0.04074          0.09902         -0.01473  =                            -0.14286
58.157696220667025655920084683293030500\\li(n)
53.000055742296901992818493253239691867
53\\pi(n)

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 14:20 
Аватара пользователя


29/04/13
8967
Богородский
Ну вот по Вашей версии программы для 25 совпадает только 1-я строка:

Код:
  1:    11.51296     0.01299    -0.69315     0.00022  =   10.83302
  2:    -1.75000     0.00000     0.00000     0.00000  =   -1.75000
  3:    -0.33333     0.00000     0.00000     0.00000  =   -0.33333
25                                                         8.74969


Центральная часть программы:
Код:
s=0.0;
for(i=1,oo,
m=moebius(i)/i; if(m==0, next);
y=sqrtn(n,i); if(y<2, break);
if(y<n,
a=b=c=d=0;
for(k=1,oo, yy=sqrtn(y,k); if(yy<2, break); a+=primepi(yy)/k; ); add=a; ,
a=real(-eint1(-log(y)));
b=sum(i=1,#zm, 2*real(eint1(-log(y)*(1/2+I*zm[i]))));
c=-log(2);
d=intnum(t=y,oo, 1/t/(t^2-1)/log(t));
add=a+b+c+d;);
s+=m*add;
printf("%3u:  %10.5f  %10.5f  %10.5f  %10.5f  = %10.5f\n",i,m*a,m*b,m*c,m*d,m*add);
);
print();
printf("%5u     %5.5f     %5.5f     %5.5f\n",n,s,b, s-round(s));
);

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение08.04.2025, 14:34 
Заслуженный участник


20/08/14
12120
Россия, Москва
Yadryara
Так там же остальные строки считаются по оптимизированной формуле, где вместо формулы Римана используется прямое вычисление j(n) через primepi(n)! И вот оно не совсем корректно ...
Уберите оптимизацию (поставьте if(y<0 вместо y<n) и будет вам счастье.
Кстати первые нули дзета-функции Римана можно получить прямо в PARI командой zm=lfunzeros(1,1e3) (до 1000i). Вот только до 1e4 уже не хватает памяти для вычисления. Так что пользы мало, только для мелких тестов.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1257 ]  На страницу Пред.  1 ... 77, 78, 79, 80, 81, 82, 83, 84  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group