|
|
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
помогите написать программу для нахождения большого простого числа желательно на с++ буду очень благодарен=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2011, 12:36 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 17:25 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
А, уже есть ещё лучше . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 17:28 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Судя по описанию - не то что-бы лучше. Совсем другой класс алгоритмов. В отличие от Миллера-Рабина он сторого детерминирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 19:04 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
mayton, Ну, так поэтому и лучше - для озвученной задачи. Конечно, если нужно найти не "гарантировано простое число", а "скорее всего простое число, но быстро", то см. пункт 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 14:49 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
самого большого числа нет. комп может проверить любое число на простоту (соответвенно - если это не подходит, искать следующее до тех пор, пока не найдется нужное). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 18:04 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
А вообще, какое самое большое число, которое можно получить на компьютере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 20:52 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
ShSergeА вообще, какое самое большое число, которое можно получить на компьютере? придётся дать определение понятию "получить на компьютере" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 21:35 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Изопропил, например пока я смог получить из интервала от1 до 1000000000. это 53326267. хотелось бы улучшить результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 01:13 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
серегй, из тебя информацию клещами надо вытаскивать Чего хотел-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 02:02 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
mayton, #include "stdafx.h" #include<math.h> #include<stdio.h> #include<conio.h> #include<time.h> #include<tchar.h> * * 2009-05-02 Mayton - Добавлен динамич. массив * Добавлен вывод статистики * Добавлен замер времени */ int _tmain(int argc, _TCHAR* argv[]) { int time1=time(NULL); int limit = 1000000000; int sqr_lim; //bool is_prime[1001]; bool *is_prime = new bool[limit+1]; int x2, y2; int i, j; int n; // Инициализация решета sqr_lim = (int)sqrt((long double)limit); for (i = 0; i <= limit; i++) is_prime[i] = false; is_prime[2] = true; is_prime[3] = true; // Предположительно простые - это целые с нечетным числом // представлений в данных квадратных формах. // x2 и y2 - это квадраты i и j (оптимизация). x2 = 0; for (i = 1; i <= sqr_lim; i++) { x2 += 2 * i - 1; y2 = 0; for (j = 1; j <= sqr_lim; j++) { y2 += 2 * j - 1; n = 4 * x2 + y2; if ((n <= limit) && (n % 12 == 1 || n % 12 == 5)) is_prime[n] = !is_prime[n]; // n = 3 * x2 + y2; n -= x2; // Оптимизация if ((n <= limit) && (n % 12 == 7)) is_prime[n] = !is_prime[n]; // n = 3 * x2 - y2; n -= 2 * y2; // Оптимизация if ((i > j) && (n <= limit) && (n % 12 == 11)) is_prime[n] = !is_prime[n]; } } // Отсеиваем квадраты простых чисел в интервале [5, sqrt(limit)]. // (основной этап не может их отсеять) for (i = 5; i <= sqr_lim; i++) { if (is_prime[i]) { n = i * i; for (j = n; j <= limit; j += n) { is_prime[j] = false; } } } // Вывод списка простых чисел в консоль. int primecount=0; for (i = 2; i <= limit; i++) { if (is_prime[i]) { //printf(", %d", i); primecount++; } } int time2=time(NULL); printf("\nAtkin 1.0 statistics :\n"); printf(" Interval : [2..%d]\n", limit); printf(" Primes detected : %d\n", primecount); printf(" Time elapsed : %d sec\n\n", time2-time1); delete[] is_prime; getch(); return 0; } вот програмка которая находит самое большое простое число до 1.000.000.000. хотелось бы находить до 10.000.000.000 . короче надо улучщить код или написать другую программу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 08:48 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
серегй, Ну... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 11:55 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
серегй, там чуть ниже я где-то еще один исходник приаттачивал с поддержкой uint64 расчётов и с быстрой целочисленной функцией sqrt без использования double типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 12:25 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
ShSergeА вообще, какое самое большое число, которое можно получить на компьютере? насчет "получить" не знаю, но "написать" на компьютере наверное можно любое большое число, для которого существует методика описания и символы описания ;) серегйвот програмка которая находит самое большое простое число до 1.000.000.000. хотелось бы находить до 10.000.000.000 . короче надо улучщить код или написать другую программу.напиши, мы не против :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 13:11 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
серегй, шутки ради, вычислял методом Эратосфена, в пределах 32 бит, на асм, - 8 часов, результат в массиве 813120880 бт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 17:10 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Тогда уж лучше мой PBFA. Хотя-бы память не так жрёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 17:12 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
maytonсерегй, там чуть ниже я где-то еще один исходник приаттачивал с поддержкой uint64 расчётов и с быстрой целочисленной функцией sqrt без использования double типов. unsigned int isqrt32(unsigned int x) { unsigned int x1; int s, g0, g1; if (x <= 1) return x; s = 1; x1 = x - 1; if (x1 > 65535) { s+=8; x1>>=16;} if (x1 > 255) { s+=4; x1>>=8;} if (x1 > 15) { s+=2; x1>>=4;} if (x1 > 3) { s+=1; } g0 = 1<<s; g1 = (g0 + (x >> s)) >> 1; while(g1 < g0) { g0 = g1; g1 = (g0 + (x/g0)) >> 1; } return g0; } вот этот да? куда его вставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 14:45 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Ну кагбе вместо квадратного корня. Ты определись с разрядностью. Этот сорс заточен только под UINT32. Если ты используешь UINT64 (возм. long) то имплементацию надо будет переделать. Это, если мне не изменяет память метод Ньютона. Оригинал я возможно брал из книги Генри Уоррена - Алгоритмические трюки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 14:49 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Abstractionсерегй, Ну... Код: plaintext как это? и почему -1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 14:57 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Фокус такой (с) Госпожа Беладонна. Отрицательное signed (-1) похоже на максимальное unsigned. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 15:06 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
maytonФокус такой (с) Госпожа Беладонна. Отрицательное signed (-1) похоже на максимальное unsigned. так signet long long int limit=-1 или как? #include<limits.h> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 15:45 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
Я не помню точно какую разрядность имеет unsigned long long. Если 64 бит то ULLONG_MAX. Если 32 бит то ULONG_MAX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 15:52 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
maytonНу кагбе вместо квадратного корня. Ты определись с разрядностью. Этот сорс заточен только под UINT32. Если ты используешь UINT64 (возм. long) то имплементацию надо будет переделать. Это, если мне не изменяет память метод Ньютона. Оригинал я возможно брал из книги Генри Уоррена - Алгоритмические трюки. пока подумаю как это сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 16:12 |
|
||
|
"самое большое простое число", которое можно найти на обычной пк.
|
|||
|---|---|---|---|
|
#18+
А что там думать? Правишь типы данных. Секции if (x< - по аналогии расширяешь до удвоенной разрядной сетки. На самом деле они не влияют на точность резульатата. Только на скорость расчётов т.к. это выбор начального приближения. Самое главное - прогони краевой модульный тест с заранее расчитанными точными целыми корнями и всё ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 16:21 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37517763&tid=1342627]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 557ms |

| 0 / 0 |
