powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / "самое большое простое число", которое можно найти на обычной пк.
25 сообщений из 44, страница 1 из 2
"самое большое простое число", которое можно найти на обычной пк.
    #37511644
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помогите написать программу для нахождения большого простого числа желательно на с++
буду очень благодарен=)
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37514789
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37514795
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, уже есть ещё лучше .
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37514966
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по описанию - не то что-бы лучше. Совсем другой класс алгоритмов.
В отличие от Миллера-Рабина он сторого детерминирован.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37516219
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну, так поэтому и лучше - для озвученной задачи. Конечно, если нужно найти не "гарантировано простое число", а "скорее всего простое число, но быстро", то см. пункт 1.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37516725
Баскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самого большого числа нет. комп может проверить любое число на простоту (соответвенно - если это не подходит, искать следующее до тех пор, пока не найдется нужное).
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37516991
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, какое самое большое число, которое можно получить на компьютере?
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37517042
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА вообще, какое самое большое число, которое можно получить на компьютере?

придётся дать определение понятию "получить на компьютере"
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37517273
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

например пока я смог получить из интервала от1 до 1000000000. это 53326267.
хотелось бы улучшить результаты.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37517302
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
серегй, из тебя информацию клещами надо вытаскивать Чего хотел-то?
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37517437
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
. короче надо улучщить код или написать другую программу.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37517763
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
серегй,

Ну...
Код: plaintext
unsigned long long int limit = - 1 ;
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37517853
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
серегй, там чуть ниже я где-то еще один исходник приаттачивал с поддержкой uint64 расчётов и
с быстрой целочисленной функцией sqrt без использования double типов.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37518015
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА вообще, какое самое большое число, которое можно получить на компьютере? насчет "получить" не знаю, но "написать" на компьютере наверное можно любое большое число, для которого существует методика описания и символы описания ;)

серегйвот програмка которая находит самое большое простое число до 1.000.000.000. хотелось бы находить до 10.000.000.000
. короче надо улучщить код или написать другую программу.напиши, мы не против :)
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37518722
Фотография mccc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
серегй,
шутки ради, вычислял методом Эратосфена, в пределах 32 бит, на асм,
- 8 часов, результат в массиве 813120880 бт.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37518725
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уж лучше мой PBFA. Хотя-бы память не так жрёт.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520035
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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;
}

вот этот да?
куда его вставить?
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520055
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну кагбе вместо квадратного корня. Ты определись с разрядностью. Этот сорс заточен только под UINT32.

Если ты используешь UINT64 (возм. long) то имплементацию надо будет переделать. Это, если
мне не изменяет память метод Ньютона. Оригинал я возможно брал из книги Генри Уоррена
- Алгоритмические трюки.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520083
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstractionсерегй,

Ну...
Код: plaintext
unsigned long long int limit = - 1 ;

как это? и почему -1?
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520112
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фокус такой (с) Госпожа Беладонна.

Отрицательное signed (-1) похоже на максимальное unsigned.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520227
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonФокус такой (с) Госпожа Беладонна.

Отрицательное signed (-1) похоже на максимальное unsigned.
так signet long long int limit=-1 или как?
#include<limits.h>
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520243
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не помню точно какую разрядность имеет unsigned long long. Если 64 бит то ULLONG_MAX.
Если 32 бит то ULONG_MAX.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520296
серегй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу кагбе вместо квадратного корня. Ты определись с разрядностью. Этот сорс заточен только под UINT32.

Если ты используешь UINT64 (возм. long) то имплементацию надо будет переделать. Это, если
мне не изменяет память метод Ньютона. Оригинал я возможно брал из книги Генри Уоррена
- Алгоритмические трюки.

пока подумаю как это сделать...
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520317
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что там думать? Правишь типы данных.

Секции if (x< - по аналогии расширяешь до удвоенной разрядной сетки.
На самом деле они не влияют на точность резульатата. Только на скорость расчётов
т.к. это выбор начального приближения.

Самое главное - прогони краевой модульный тест с заранее расчитанными
точными целыми корнями и всё ОК.
...
Рейтинг: 0 / 0
"самое большое простое число", которое можно найти на обычной пк.
    #37520767
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему ограничение только во времени которое будет затрачено на поиск числа.
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / "самое большое простое число", которое можно найти на обычной пк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]