Другие языки программирования и технологии

При помощи компьютера эту задачу до какого числа можно решить?

Когда сумма простых чисел подряд начиная с 3 равна степени двойки минус единица?

Пример
3 = 2*2-1 первое число
3+5=8
8+7=15 2*2*2*2-1 второе число
15+11=26
26+13=39
39+17=56
56+19=75
75+23=98
98+29=127 2*2*2*2*2*2*2-1 третье число
127+31=158

Нужно найти четвёртое число.
С меня - алгоритм, с вас - ждать)

#include <iostream>
using namespace std;
typedef unsigned long long ullong;
bool is_number(ullong);
bool is_prime(ullong);
int main() {
unsigned short k = 4;
ullong n = 0, dx = 1;
while (k) {
dx += 2;
while (!is_prime(dx)) dx += 2;
if (double(n) + double(dx) > ULLONG_MAX) break;
n += dx;
if (n & 1 && is_number(n)) {
cout << n - dx << " + " << dx << " = " << n << endl;
--k;
}
}
if (k) cout << "I am sorry!\n";
cin.get();
}
bool is_number(ullong n) {
do if (~n & 1) return false; while (n >>= 1);
return true;
}
bool is_prime(ullong num) {
bool prime;
if (num == 2 || num == 3 || num == 5) prime = true;
else if (~num & 1 || num < 2 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
ullong n;
for (n = 3; n * n <= num && num % n; n += 2);
prime = n * n > num? true : false;
}
return prime;
}
Giorgi Gongadze
Giorgi Gongadze
61 855
Лучший ответ
Нет ни чего сложного!

Используя только стандартные средства, можно проверить только до 2^32 или 2^64 (зависит от битности системы) , ну или до 2^64 и 2^128 - средства бывают разные.
А вообще - сколько оперативки и времени процессора хватит.
А вообще такие есть?
http://pastebin.com/CPi1kurY

по результатам http://www.compileonline.com/execute_python3_online.php
3: 3 as hex 0x3
7: 15 as hex 0xf
29: 127 as hex 0x7f
52813: 134224261 as hex 0x8001985
323381: 4295165355 as hex 0x1000305ab
464447: 8590210333 as hex 0x20004351d
665801: 17180492825 as hex 0x400098419
954491: 34359781994 as hex 0x80000aa6a
954497: 34360736491 as hex 0x8000f3aeb
954509: 34361691000 as hex 0x8001dcb78
1368233: 68719531515 as hex 0x100000d5fb
1368251: 68720899766 as hex 0x100015b6b6
1368253: 68722268019 as hex 0x10002a9773
1368259: 68723636278 as hex 0x10003f7836
1959751: 137440857162 as hex 0x20001d0c4a
1959773: 137442816935 as hex 0x20003af3a7
1959787: 137444776722 as hex 0x200058db12
1959799: 137446736521 as hex 0x200076c289

Я знаю, что неправильно (hex не оканчивается на ..FF), но это те, для которых логарифм очень похож
Просто показываю, что до 2.0e6 таких простых чисел нет
В принципе можно проверить суммы до 4.0e12, но я уже не верю в гипотезу
Николай Довбуш
Николай Довбуш
11 112